JDBC(Java DataBase Connectivity)就是Java數據庫鏈接,簡單說就是用Java語言來操做數據庫。原來咱們操做數據庫是在控制檯使用SQL語句來操做數據庫,JDBC是用Java語言向數據庫發送SQL語句。java
特色:mysql
1)跨平臺運行:這是繼承了Java語言的「一次編譯,處處運行」的特色;sql
2)不受數據庫供應商的限制:巧妙在於JDBC設有兩種接口,一個是面向應用程序層,其做用是使得開發人員經過SQL調用數據庫和處理結果,而不須要考慮數據庫的提供商;另外一個是驅動程序層,處理與具體驅動程序的交互;數據庫
1)Driver接口:
Driver接口由數據庫廠家提供,做爲java開發人員,只須要使用Driver接口就能夠了。編程
2)Connection接口:
Connection與特定數據庫的鏈接(會話),在鏈接上下文中執行sql語句並返回結果。oracle
經常使用方法:url
3)Statement接口:
用於執行靜態SQL語句並返回它所生成結果的對象。spa
三種Statement類:code
經常使用Statement方法:對象
4)ResultSet接口:
執行sql查詢語句返回的結果集。
ResultSet提供檢索不一樣類型字段的方法:
ResultSet對結果集進行滾動的方法:
【使用後依次關閉對象及鏈接:ResultSet → Statement → Connection】
1)加載驅動程序;
Class.forName(driverClass) //加載MySql驅動 Class.forName("com.mysql.jdbc.Driver") //加載Oracle驅動 Class.forName("oracle.jdbc.driver.OracleDriver")
2)獲取數據鏈接:經過DriverManager類建立數據庫鏈接對象Connection;
Connection conn = DriverManager.getConnection(url, user,password);
3)建立Statement對象:
Statement stmt = conn.createStatement();
4)調用Statement對象的相關方法執行相對應的 SQL 語句:經過execuUpdate()方法用來數據的更新,包括插入和刪除等操做;
5)關閉數據庫鏈接:使用完數據庫或者不須要訪問數據庫時,經過Connection的close() 方法及時關閉數據鏈接;
例:
獲取鏈接數據庫資源
private static ResourceBundle bundle= ResourceBundle.getBundle("connect");//資源包 private static String driver= bundle.getString("driver");//驅動程序 private static String url=bundle.getString("url"); //數據庫鏈接地址 private static String user=bundle.getString("user");//用戶名稱 private static String password=bundle.getString("password");//用戶密碼</pre>
建立鏈接
public Connection getConn() { try { Class.forName(driver);//加載驅動 Connection conn; conn=DriverManager.getConnection(url, user, password);//建立鏈接 return conn; } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return null; }
執行方法
public void Update(String sql, ArrayList<String> parameters) { Connection connection = getConn();//獲取鏈接 PreparedStatement ps = null;//初始化陳述清單 try { connection.setAutoCommit(false);// 更改JDBC事務的默認提交方式,默認是true,是自動提交; ps = connection.prepareStatement(sql);//設置sql語句 for (int i = 0; i < parameters.size(); i++) { ps.setString(i + 1, parameters.get(i));//設置參數 } ps.executeUpdate(); connection.commit();//提交JDBC事務,若是沒問題,這時才真正的刪除了; connection.setAutoCommit(true);// 恢復JDBC事務的默認提交方式; } catch (SQLException e) { try { //回滾JDBC事務,出現異常,爲保證數據完整性,這次操做回滾,不刪除; connection.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); }finally{ try { //關閉資源 ps.close();connection.close(); } catch (SQLException e) {e.printStackTrace(); }}}