恢復內容開始 1.首先說明什麼是JDBC在第一眼看到這個名詞之前,我覺得有必要知道它的英文全稱是什麼,Java Database Connectivity,從英文字面上理解就直譯為可連通的Java資料庫,說白了也就是想提供一套中間環節,去連接Java代碼與資料庫,使之可以直接通過操作Java代碼就可 ...
---恢復內容開始---
1.首先說明什麼是JDBC
在第一眼看到這個名詞之前,我覺得有必要知道它的英文全稱是什麼,Java Database Connectivity,從英文字面上理解就直譯為
可連通的Java資料庫,說白了也就是想提供一套中間環節,去連接Java代碼與資料庫,使之可以直接通過操作Java代碼就可以控制資料庫。
2.JDBC的實質
它是Java訪問資料庫的解決方案,希望能過用同樣的方式訪問不同的資料庫,以達到實現與具體資料庫無關的Java操作界面。
JDBC實質上就是就是一套標準化的介面,不同的資料庫廠商根據自己的資料庫特點去實現這套介面,實現的具體方法無需我們去關心。
JDBC中資料庫廠商實現的主要介面如下:
DriverManager :驅動管理
Connection、
DatabaseMetaData :連接介面
Statement、
PreparedStatement
CallableStatement: 語句對象介面
ResultSet、
ResultSetMetaData: 結果集介面
3.JDBC的工作原理
程式員調用的是底層資料庫廠商實現的部分,
即:1)通過Connection 介面實現第一步的連接
2)通過Statement結果傳送sql語句
3)資料庫返回結果保存到ResultSet結果集合介面中
主要流程可歸納為:
1)載入驅動,創建連接
2)創建語句對象
3)執行SQL語句
4)發回結果集
5)關閉連接
下麵我以我學的oracle資料庫配合eclips為例逐步闡述一下如何實現JDBC
1)載入驅動
使用的方法為:Class.forName(“驅動”);
對於如何獲得到這個驅動,我所知道的方法是:展開JDBC的jar包,如我使用的是ojdbc6.jar,在裡面找到oracle.jdbc.driver,在裡面再找到OracleDriver然後滑鼠右鍵點qualitycopy,粘貼到引號之中即可,如:Class.forName("oracle.jdbc.driver.OracleDriver");
2)創建連接
使用的方法為: conn=DriverManager.getConnection(“jdbc:oracle:thin:@IP地址:1521:orcl","資料庫賬號","資料庫密碼”);
如:conn=DriverManager.getConnection("jdbc:oracle:thin:@172.16.3.8:1521:orcl","jsd1601","jsd1601");
3)創建語句對象
使用的方法為:Statement stmt=conn.createStatement();
需要註意的是,使用的是第二步上面創建出來的連接去調用方法
調用executeUpdate方法將sql語句傳入其中即可執行所寫的sql語句,這裡需要註意的是,executeUpdate方法能執行的sql種類為insert,update,delete
如: Statement stmt=conn.createStatement();
String sql="insert into emp_jiawenzhe(empno,ename,sal,deptno) values(1000,'賈文哲',1500,10)";
int i=stmt.executeUpdate(sql);
這裡面的返回值i就是受影響的行數,我們可以根據這個受影響的行數來判斷是否操作成功
4)而對於返回的結果集主要是指進行select操作(這裡暫不提)
5)最後關閉連接
如:conn.close();
列舉一整體代碼,包括註釋:
1 package jdbc_day01; 2 import java.sql.*; 3 /** 4 * 演示JDBC的操作步驟 5 * 1、載入驅動程式 6 * 2、創建連接 7 * 3、創建語句對象 8 * 4、發送SQL語句 9 * 5、如果發送的是select語句,處理結果集 10 * 6、關閉連接 11 * @author jiawenzhe 12 * 13 */ 14 public class JDBCDome01 { 15 public static void main(String[] args) throws SQLException { 16 //需求:創建一個員工,員工號,員工名,工資,部門號 17 //1、 18 Connection conn=null; 19 try { 20 Class.forName("oracle.jdbc.driver.OracleDriver"); 21 System.out.println("驅動載入成功"); 22 //2、 23 conn= 24 DriverManager.getConnection("jdbc:oracle:thin:@172.16.3.8:1521:orcl","jsd1601","jsd1601"); 25 System.out.println(conn.getClass().getName()); 26 //3、 27 //Statment 語句對象。發送並執行SQL語句 28 /* 29 * int excuteUpdate(String sql); 30 * 發送insert,update,delete語句 31 * 返回值int表示影響資料庫表的行數 32 */ 33 Statement stmt=conn.createStatement(); 34 String sql="insert into emp_jiawenzhe(empno,ename,sal,deptno) " 35 + "values(1000,'王小二',1500,10)"; 36 int i=stmt.executeUpdate(sql); 37 if(i>0){ 38 System.out.println("保存成功!"); 39 } 40 } catch (ClassNotFoundException e) { 41 e.printStackTrace(); 42 //1、記錄日誌 43 //2、通知調用者 44 throw new RuntimeException("載入驅動錯誤",e); 45 }finally{ 46 //關閉連接 47 if(conn!=null){ 48 try { 49 conn.close(); 50 } catch (SQLException e) { 51 e.printStackTrace(); 52 } 53 } 54 } 55 56 57 58 59 } 60 }
註:oracle資料庫可以使用的jar包:ojdbc14.jar/ojdbc6.jar(oracle12c用這個)
mysql資料庫可以使用的jar包:mysql-connector-java-5.0.4-bin.jar
載入驅動類:
Class.forName("com.mysql.jdbc.Driver");
未完待續!
---恢復內容結束---