【MySQL 05】使用Java對MySQL進行操作(創建數據庫)

jdbc連接數據庫:

1、加載JDBC驅動程序?
2、提供JDBC連接的URL?
3、創建數據庫的連接?
4、創建一個Statement?
5、執行SQL語句?
6、處理結果?
7、關閉JDBC對象

1、加載JDBC驅動程序:

在連接數據庫之前,首先要加載想要連接的數據庫的驅動到JVM(Java虛擬機),這通過java.lang.Class類的靜態方法

?//加載數據庫驅動總共有三種方式:  ?try{???  ????//①??  ????Class.forName("com.mysql.jdbc.Driver")?;???  ????//②????com.mysql.jdbc.Driver?driver?=?new?com.mysql.jdbc.Driver();  ????//③  ????new?com.mysql.jdbc.driver();    ?}catch(ClassNotFoundException?e){???  ????System.out.println("找不到驅動程序類?,加載驅動失??!");???  ????e.printStackTrace()?;???  ?}

成功加載后,會將Driver類的實例注冊到DriverManager類中。

立即學習Java免費學習筆記(深入)”;

2、提供JDBC連接的URL

  • 連接URL定義了連接數據庫時的協議、子協議、數據源標識。

  • MYSQL的JDBC URL 編寫方式:jdbc:mysql://主機名稱:端口號/數據庫名稱?user = 用戶名 & password =密碼& useUnicode = true & characterEncoding = UTF8

?String?url?=?"jdbc:mysql://localhost:3306/samp_db?"?+?"user=root&password=mysql&useUnicode=true&characterEncoding=UTF8";

3、創建數據庫連接

?要連接數據庫,需要向java.sql.DriverManager請求并獲得Connection對象,該對象就代表一個數據庫的連接。 ?
?使用DriverManager的getConnectin(String url , String username , String password )方法傳入指定的欲連接的數

??String?url?=?"jdbc:mysql://localhost:3306/test"?;????  ?????String?username?=?"root"?;???  ?????String?password?=?"root"?;???  ??try{???    ?????Connection?con?=?DriverManager.getConnection(url?,?username?,?password?)?;??    ??}catch(SQLException?se){???  ?????System.out.println("數據庫連接失敗!");???  ?????se.printStackTrace()?;???  ??}

4、創建一個Statement

?要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3 種類型: ?
?1、執行靜態SQL語句。通常通過Statement實例實現。 ?
?2、執行動態SQL語句。通常通過PreparedStatement實例實現。 ?
?3、執行數據庫存儲過程。通常通過CallableStatement實例實現。

?Statement?stmt?=?con.createStatement()?;??    ????PreparedStatement?pstmt?=?con.prepareStatement(sql)?;?    ????CallableStatement?cstmt?=???con.prepareCall("{CALL?demoSp(??,??)}")?;

5、執行SQL語句

Statement接口提供了三種執行SQL語句的方法:executeQuery 、executeUpdate 和execute?
1、ResultSet executeQuery(String sqlString):執行查詢數據庫的SQL語句,返回一個結果集(ResultSet)對象。?
2、int executeUpdate(String sqlString):用于執行INSERT、UPDATE或 DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等?
3、execute(sqlString):用于執行返回多個結果集、多個更新計數或二者組合的語句。

??ResultSet?rs?=?stmt.executeQuery("SELECT?*?FROM?...")?;???  ???int?rows?=?stmt.executeUpdate("INSERT?INTO?...")?;???  ???boolean?flag?=?stmt.execute(String?sql)?;

6、處理結果

兩種情況:?
1、執行更新返回的是本次操作影響到的記錄數。?
2、執行查詢返回的結果是一個ResultSet對象。?
? ResultSet包含符合SQL語句中條件的所有行,并且它通過一套get方法提供了對這些行中數據的訪問。?
? 使用結果集(ResultSet)對象的訪問方法獲取數據:

??while(rs.next()){???  ?????????String?name?=?rs.getString("name")?;???  ?????????String?pass?=?rs.getString(1)?;?//?此方法比較高效???  ??}???  ????(列是從左到右編號的,并且從列1開始)

7、關閉JDBC對象

操作完成以后要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反: ?
1、關閉記錄集 ?
2、關閉聲明 ?
3、關閉連接對象

?if(rs?!=?null){???//?關閉記錄集???  ????try{???  ???????rs.close()?;???  ????}catch(SQLException?e){???  ???????e.printStackTrace()?;???  ????}???  ?}???if(stmt?!=?null){???//?關閉聲明???  ????try{???  ???????stmt.close()?;???  ????}catch(SQLException?e){???  ???????e.printStackTrace()?;???  ????}???  ?}???    ?if(conn?!=?null){??//?關閉連接對象???  ????try{???  ???????conn.close()?;???  ????}catch(SQLException?e){???  ???????e.printStackTrace()?;???  ????}???  ?}

完整程序:

package?org.Mysql;  import?java.sql.Connection;import?java.sql.DriverManager;  import?java.sql.ResultSet;import?java.sql.SQLException;  import?java.sql.Statement;public?class?mysqlDemo?{    ????public?static?void?main(String[]?args)?throws?Exception?{  ????????//使用connection進行數據庫的連接,創建一個connection對象,用于數據庫的連接  ????????Connection?conn?=?null;  ????????String?sql;  ????????//?MySQL的JDBC?URL編寫方式:jdbc:mysql://主機名稱(localhost):連接端口(3306)/數據庫的名稱?參數=值  ????????//?指定數據庫的用戶名和密碼  ????????//?避免中文亂碼要指定useUnicode和characterEncoding  ????????//?執行數據庫操作之前要在數據庫管理系統上創建一個數據庫,名字自己定  ????????//?下面語句之前就要先創建samp_db數據庫  ????????String?url?=?"jdbc:mysql://localhost:3306/samp_db?"  ????????????????+?"user=root&password=mysql&useUnicode=true&characterEncoding=UTF8";    ????????try?{  ????????????//?之所以要使用下面這條語句,是因為要使用MySQL的驅動,所以我們要把它驅動起來,  ????????????//?可以通過Class.forName把它加載進去,也可以通過初始化來驅動起來,下面三種形式都可以  ????????????//?動態加載mysql驅動  ????????????Class.forName("com.mysql.jdbc.Driver");  ????????????//?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();  ????????}    ????}    }

以上就是?【MySQL 05】使用Java對MySQL進行操作(創建數據庫)的內容,更多相關內容請關注PHP中文網(www.php.cn)!

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享