1. 程式人生 > >Ubuntu Java連線mysql資料庫

Ubuntu Java連線mysql資料庫

最近準備著手寫一個類似‘QQ’的聊天軟體玩玩,在登入問題上想到用資料庫來儲存資料,在學習Java連線資料庫時碰到不少問題,所幸,都解決了。下面說說我的學習過程。全程是在Ubuntu16.04下進行操作。不過應該和Window下的區別不大。可以參考。

第一步:準備工作,需要安裝好mysql資料庫(教程),eclipse程式設計工具(非必須),Java 連線 MySQL 需要驅動包,最新版下載地址為:http://dev.mysql.com/downloads/connector/j/,選擇Ubuntu下載,下載後得到一個deb檔案,用歸檔管理器開啟,找到名為mysql-connector-java-8.0.12.jar

的檔案(版本可能不一樣,但大致是這個樣子),然後在對應(需要連線資料庫的)的專案中建立一個名為lib的資料夾,將找到的檔案放入該資料夾下。開啟eclipse,找到剛才放到lib資料夾下的檔案,右鍵單擊,選擇 Build Path,Add To Build Path。這樣準備工作就做好了,最後,放個圖。

第二步: 寫程式碼,直接看程式碼,註釋很清楚,若不能執行,看下方解決方法。

package testone;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ConnSql {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String driver = "com.mysql.cj.jdbc.Driver";	//驅動名,預設
		String url = "jdbc:mysql://localhost:3306/testone?serverTimezone=GMT&useSSL=false";	//將要訪問的資料庫名稱testone
		String user = "root";	//mysql資料庫使用者名稱
		String password = "root";	//mysql資料庫使用者密碼
		
		try {
			Class.forName(driver);	//載入驅動
			Connection conn = DriverManager.getConnection(url, user, password);	//建立connection物件,用來連線資料庫
			if(!conn.isClosed())
				System.out.println("Succeed!");
			Statement state = conn.createStatement();	//建立statement物件,用來執行sql語句
			String sql = "select * from login;";	//執行的sql語句
			ResultSet rst = state.executeQuery(sql);	//建立resultset物件,用來存放查詢結果
			while(rst.next()) {
				System.out.println(rst.getString("name"));	//輸出表中列為‘name’的所有項
			}
			rst.close();
			state.close();
			conn.close();
			
		}catch(Exception e) {
			System.out.println("defeat!");
			System.out.println(e);
		}
	}

}

結果

附:資料庫資訊

資料庫名稱:testone

使用的資料庫表:login

資料庫使用者:root

使用者密碼:root

遇到的問題

說說我遇到的問題,首先,驅動名為"com.mysql.cj.jdbc.Drive",在網上看到都是"com.mysql.jdbc.Drive"這個,經測試,我的是不能用的,出現 :

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

然後就是url的問題,"jdbc:mysql://localhost:3306/testone?serverTimezone=GMT&useSSL=false",網上的為"jdbc:mysql://localhost:3306/testone",這個是無法執行的,出現警告:

Thu Sep 27 04:11:22 PDT 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

java.sql.SQLException: The server time zone value 'PDT' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

上面一條是指Mysql資料庫的SSL連線問題,提示警告不建議使用沒有帶伺服器身份驗證的SSL連線,是在MYSQL5.5.45+, 5.6.26+ and 5.7.6+版本中才有的這個問題。解決辦法在警告中已經說明了:

    1.在資料庫連線的url中新增useSSL=false;

    2.url中新增useSSL=true,並且提供伺服器的驗證證書。

如果只是做一個測試的話,沒必要搞證書那麼麻煩啦,在連線後新增一個useSSL=false即可。

下面一條是由於資料庫和系統時區差異所造成的,在jdbc連線的url後面加上serverTimezone=GMT即可。

兩點問題,都加在url的後面,所以url改為:"jdbc:mysql://localhost:3306/testone?serverTimezone=GMT&useSSL=false",兩個引數間用&連線,自己測試得出。

小知識

SQL注入: 在執行sql語句時,由於sql語句的值是由使用者輸入的,所以是以變數接收的,如果以拼接字串方式來執行SQL語句,一旦資料中有非法字元或者有關鍵字時,會導致語法錯誤,或者執行結果不正確的情況,這稱為SQL注入。
Statement和PreparedStatement的區別

Statement是PreparedStatement 的父介面。在執行SQL語句時,只能以拼接字串方式,拼接值。會引起SQL注入。而且效率低。

PreparedStatement,是預編譯SQL語句執行物件,支援佔位符方式,無論資料是什麼值,都當字串處理,不會引起SQL注入。而且效率高。

Statement和PreparedStatement的基本用法

Connection conn = DriverManager.getConnection(url, user, password);
String sql = "select * from login;";	//執行的sql語句

Statement state = conn.createStatement();
//PreparedStatement sta = conn.prepareStatement(sql);

ResultSet rst;
int count;

count = state.executeUpdate("增刪改的sql語句");    //返回更改的結果數
rst = state.executeQuery("查詢的sql語句");    //返回結果集
//count = sta.executeUpdate("增刪改的sql語句");    //返回更改的結果數
//rst = sta.executeQuery("查詢的sql語句");    //返回結果集

參考部落格:

相關推薦

Ubuntu Java連線mysql資料庫

最近準備著手寫一個類似‘QQ’的聊天軟體玩玩,在登入問題上想到用資料庫來儲存資料,在學習Java連線資料庫時碰到不少問題,所幸,都解決了。下面說說我的學習過程。全程是在Ubuntu16.04下進行操作。不過應該和Window下的區別不大。可以參考。 第一步:準備工作,需

ubuntu環境下,Java連線MySQL資料庫

其實,在ubuntu環境下,Java的程式設計與windows系統的差別並不是很大。畢竟Java是跨平臺的面象物件的程式語言。 工具:eclipse、MySQL、MySQL workbench(視覺化軟體) jar包:mysql-connector-java-5.1.44

ERROR:java連線mysql資料庫8.0以上版本

先上解決辦法: 1、修改jdbc.properties    原來是: jdbc.url=jdbc:mysql://localhost:3306/language_protection?useUnicode=true&characterEncoding=UTF

Java連線Mysql資料庫警告 Establishing SSL connection without server'

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

關於Java連線mysql資料庫驅動載入

第一步準備工作: 在官網https://dev.mysql.com/downloads/connector/j/下載mysql驅動   下載完後開啟資料夾   複製mysql-connector-java-8.0.13.jar檔案 第二步開啟e

JAVA連線MySQL資料庫

package com.coding.test; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import com.mysql.jdbc.C

Java 連線 MySQL 資料庫方法

Java 連線 MySQL 資料庫方法 1、傳統的連線方式 # 動態載入mysql驅動 Class.forName("com.mysql.jdbc.Driver"); 獲取連線

【JDBC程式設計】Java 連線 MySQL資料庫基礎、入門和進階

Content: 常用的JDBC API 資料庫環境的搭建 建立資料庫連線 資料庫訪問優化 一. 常用的JDBC API 1. DriverManager類 : 資料庫管理類,用於管理一組JDBC驅動程式的基本服務。應用程式和資料

Java連線MySQL資料庫8.0以上版本遇到的坑(The new driver class is `com.mysql.cj.jdbc.Driver)

我遇到了java無法連線mysql資料庫8.0.1的問題。         報錯:Loading class `com.mysql.jdbc.Driver'. This is deprecated.

java連線Mysql資料庫失敗

問題 無法連線到資料庫:可能是因為匯入的mysql-connector-java-x.x.xx.jar版本過低,無資料庫版本不匹配。解決辦法:下載最新的包匯入,同時更改jdbc.driverClass = com.mysql.dbc.Driver為jdbc.driverClass = co

IDEA java連線mysql資料庫,實現對資料庫的增刪改查

先上程式碼: package Database_Demo; import java.sql.*; public class DataBase { public static void main(String[] args) { Connect

JAVAJAVA連線MySql資料庫

步驟:1.eclipse工具連線工具:eclipse   MySQL5.6   MySQL連線驅動:mysql-connector-java-5.1.27.jar   http://cdn.mysql.com//Downloads/Connector-J/mysql-conn

Java連線mysql資料庫攻略

  2. 連線mysql  輸入:mysql –h localhost –u root –p  輸入在安裝時已設好的密碼,就近入了mysql的命令編輯介面了。  3. 使用mysql的基本命令(在mysql命令列編輯每輸入完命令後最後一定要有分號,不然會報錯)  顯示資料庫:show databases;  

java連線MySQL資料庫 json資料前後端互動

先在下圖資料夾中匯入相應的jar包,其中第一個紅框中的是使用json資料需匯入的7個包,第二個紅框是用JDBC連線MySQL資料庫必須的包。 連線MySQL的工具類: package com.XXXXXX.util; import java.sql

java連線MySql資料庫 實現使用者登入功能

一: 準備工作        1.首先將MySql的jar包匯入專案檔案中,在進行連線。(Build path--> Add)        2.寫好配置檔案(dbinfo.properties)        3.               4.建立相應的類進行。二

java連線MySQL資料庫DB類底層框架程式碼實現

前言:用java連線MySQL資料庫程式碼都是十分固定的,所以直接將一些固定的程式碼寫在一個DBmanager類中可以省去許多重複的工作,連線不同MySQL資料庫只需改變user和password即可。為了方便大家,我已經將程式碼總結出來。 程式碼塊 i

Java連線mysql資料庫經典程式碼

連其他資料庫方式與以下方式類似。 package dao.impl; import java.sql.Connection; import java.sql.DriverManager; import

java連線mysql資料庫實現單條插入和批量插入

1、連線資料庫 package com.njupt.ymh; import java.sql.DriverManager; import java.sql.SQLException; import com.mysql.jdbc.Connection; public

Java連線MySQL資料庫及簡單操作程式碼

Java連線MySql需要下載JDBC驅動MySQL-connector-java-5.0.5.zip(舉例,現有新版本)。然後將其解壓縮到任一目錄。我是解壓到D盤,然後將其目錄下的MySQL-connector-java-5.0.5-bin.jar加到classpath裡,具體如下: “我的電腦”-&

MyEcplise中java連線MySQL資料庫java.lang.NoClassDefFoundError: org/aspectj/lang/Signature問題

我用的是ecplise3.2+myecplise5.1.1+Tomcat 5.0+MySQL5.0+jdk1.5新建專案名為Test,然後在裡面新建了mysql.html和mysql.jsp功能是把mysql.html寫的東西傳到mysql.jsp中程式如下:(2.1)mysql.html <html