JDBC連結本地MySQL資料庫,建立表結構並新增資料和查詢資料
阿新 • • 發佈:2018-12-25
首先我們要下載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;//和上面兩個效果一致。
大功告成!去插入中文欄位試試吧!
專案地址:傳送門