1. 程式人生 > >JDBC連結本地MySQL資料庫,建立表結構並新增資料和查詢資料

JDBC連結本地MySQL資料庫,建立表結構並新增資料和查詢資料

首先我們要下載JDBC的jar包,本專案中jar放在了lib目錄中,大家可以直接使用我這個mysql-connector-java-5.1.42-bin.jar包。

然後新增一個Main,使用JDBC連結MySQL資料庫,建立表結構並新增資料和查詢資料

具體程式碼:

public class Main{

    public static void main(String[] args) throws Exception {
        connectMySQLTest01();
        connectMySQLTest02();
        connectMySQLTest03();
    }

    //連結資料庫,建立student表,並新增內容
private static void connectMySQLTest01() throws SQLException { Connection conn = null; String sql; // MySQL的JDBC URL編寫方式:jdbc:mysql://主機名稱:連線埠/資料庫的名稱?引數=值 // 避免中文亂碼要指定useUnicode和characterEncoding // 執行資料庫操作之前要在資料庫管理系統上建立一個數據庫,名字自己定, // 下面語句之前就要先建立javademo資料庫 String url = "jdbc:mysql://localhost:3306/test?"
+ "user=root&password=123456&useUnicode=true&characterEncoding=UTF8"; try { // 之所以要使用下面這條語句,是因為要使用MySQL的驅動,所以我們要把它驅動起來, // 可以通過Class.forName把它載入進去,也可以通過初始化來驅動起來,下面三種形式都可以 Class.forName("com.mysql.jdbc.Driver");// 動態載入mysql驅動 // or:
// com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver(); // or: // new com.mysql.jdbc.Driver(); System.out.println("成功載入MySQL驅動程式"); // 一個Connection代表一個數據庫連線 conn = DriverManager.getConnection(url); // Statement裡面帶有很多方法,比如executeUpdate可以實現插入,更新和刪除等 Statement stmt = conn.createStatement(); sql = "create table student(NO char(20),name varchar(20),primary key(NO))"; int result = stmt.executeUpdate(sql);// executeUpdate語句會返回一個受影響的行數,如果返回-1就沒有成功 if (result != -1) { System.out.println("建立資料表成功"); sql = "insert into student(NO,name) values('2012001','陶偉基')"; result = stmt.executeUpdate(sql); sql = "insert into student(NO,name) values('2012002','周小俊')"; result = stmt.executeUpdate(sql); sql = "select * from student"; ResultSet rs = stmt.executeQuery(sql);// executeQuery會返回結果的集合,否則返回空值 System.out.println("學號\t姓名"); while (rs.next()) { System.out .println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int型別可以用getInt() } } } catch (SQLException e) { System.out.println("MySQL操作錯誤"); e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { conn.close(); } } //連結資料庫,查詢資料庫student表結構的內容 private static void connectMySQLTest02() throws SQLException { Connection conn = null; String sql; // MySQL的JDBC URL編寫方式:jdbc:mysql://主機名稱:連線埠/資料庫的名稱?引數=值 // 避免中文亂碼要指定useUnicode和characterEncoding // 執行資料庫操作之前要在資料庫管理系統上建立一個數據庫,名字自己定, // 下面語句之前就要先建立javademo資料庫 String url = "jdbc:mysql://localhost:3306/test?" + "user=root&password=123456&useUnicode=true&characterEncoding=UTF8"; try { // 之所以要使用下面這條語句,是因為要使用MySQL的驅動,所以我們要把它驅動起來, // 可以通過Class.forName把它載入進去,也可以通過初始化來驅動起來,下面三種形式都可以 Class.forName("com.mysql.jdbc.Driver");// 動態載入mysql驅動 // or: // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver(); // or: // new com.mysql.jdbc.Driver(); System.out.println("成功載入MySQL驅動程式"); // 一個Connection代表一個數據庫連線 conn = DriverManager.getConnection(url); // Statement裡面帶有很多方法,比如executeUpdate可以實現插入,更新和刪除等 Statement stmt = conn.createStatement(); sql = "create table student(NO char(20),name varchar(20),primary key(NO))"; //查詢資料庫student表結構資料 sql = "select * from student"; ResultSet rs = stmt.executeQuery(sql);// executeQuery會返回結果的集合,否則返回空值 System.out.println("學號\t姓名"); while (rs.next()) { System.out .println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int型別可以用getInt() } } catch (SQLException e) { System.out.println("MySQL操作錯誤"); e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { conn.close(); } } //封裝一個DBHelper類來開啟和關閉資料庫 private static void connectMySQLTest03() { String sql = "select * from student";//SQL語句 DBHelper db1 = new DBHelper(sql);//建立DBHelper物件 try { ResultSet ret = db1.pst.executeQuery();//執行語句,得到結果集 while (ret.next()) { System.out .println(ret.getString(1) + "\t" + ret.getString(2));// 入如果返回的是int型別可以用getInt() } ret.close(); db1.close();//關閉連線 } catch (SQLException e) { e.printStackTrace(); } } }

Cmd命令列視窗中,MySQL表中資料亂碼問題

百度了一下。。有說將cmd字元編碼用chcp命令改為65001(utf8字元編碼),可這樣之後根本無法輸入中文,查詢出的中問結果依舊亂碼
其實,只要保證cmd客戶端和MySQL兩者編碼一致即可。
但現實是cmd預設的是gbk(cmd屬性可以看到中文作業系統下面是gbk編碼),而mysql一般是utf8(我的也是),之前一直進入誤區,想要更改cmd的字元編碼,可是並不能行得通。網友中提到在mysql中關於客戶端編碼問題,只需在cmd裡告訴mysql伺服器我客戶端這邊編碼和想要的結果集編碼即可。

具體步驟:
1、win+r進入cmd,然後切到mysql安裝目錄的bin資料夾下(或者直接開啟我的電腦找到bin資料夾,在上方位址列輸入cmd);

2、輸入 mysql -uroot -p,然後按提示輸入密碼計入資料庫;

3、設定編碼;

此時輸入 set character_set_client=gbk;告訴我客戶端這邊的文字編碼
再輸入set character_set_results=gbk; 告訴mysql希望返回的結果集編碼;實驗中發現只要客戶端是gbk編碼的,只要設定這個就可以解決亂碼這個問題。

還有另外一個好用的命令可以同時達到上面兩條指令的效果:

set charset gbk;//和上面兩個效果一致。

大功告成!去插入中文欄位試試吧!

專案地址:傳送門