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)!