JDBC(Java Data Base Connectivity),用於實現java語言編程與數據庫鏈接的API。java
數據庫驅動:應用程序並不能直接使用數據庫,而須要經過相應的數據庫驅動程序後再操做數據庫;而JDBC就是實現應用程序去加載具體的驅動;mysql
應用程序---JDBC--->驅動程序-->數據庫sql
創建JDBC鏈接:數據庫
import java.sql.*
Class.forName("com.mysql.jdbc.Driver");//加載驅動 Connection conn = null; conn = DriverManager.getConnection("jdbc:mysql://hostname:port/db_name","db_username","db_password");//獲取連接 conn.close();
這樣,咱們的JDBC鏈接即已建好。編程
交互spa
鏈接創建後,一般經過JDBC Statement、CallableStatement和PrepareStatement這3個接口進行交互。code
而建立這3種接口的方法分別是Connection類中的createStatement()、prepareStatement(sql)、prepareCall(sql)方法;除了這3種方法外,Connection類還提供了對象
setAutoCommit(boolean autoCommit)方法:是否事務自動提交;blog
commit()方法:提交事務;接口
roolback()方法:回滾事務
建立Statement對象:
Statement stmt = null; try{ stmt = conn.createStatement(); }catch(SQLException e){ ... }finally{ ... }
該對象經常使用的方法:
boolean execute(String SQL ):檢索SQL運行後結果是否存在,有則返回true,沒有則返回false;
int executeUpdate(String SQL):檢索SQL語句所影響的行數,經常使用於會影響多行改動的SQL語句,如INSERT、UPDATE、DELETE;
ResultSet executeQuery(String SQL):返回運行後的結果集合,經常使用於SELECT;
addBatch(String sql):把多條sql語句放到一個批處理中;
executeBatch():批量處理一批sql語句;
關閉Statement對象:
finally{ stmt.close(); }
建立PreparedStatement對象:
PreparedStatement pstmt = null; try{ String SQL = "Update employees SET age = ? WHERE id = ?"; pstmt = conn.prepareStatement(SQL); ... }catch{ ... }finally{ pstmt.close(); }
其中?即表示要輸入的參數。經過stmt.setXXX(number,value);輸入參數,其中XXX表示參數數值類型,number表示?在程序出現的位置,從1開始計數;value表示輸入參數的值;
Statement對象可用的方法均可以使用。
建立CallableStatement對象:
CallableStatement cstmt = null; try{ String strSQL = "{call getEmpName(?,?)}"; cstmte = conn.prepareCall(SQL); ... }catch(SQLException e){ ... }finally{ cstmt.close(); }
對比前面的3種方法,CallcbleStatement多了一種方法:registerOutParameter(),該方法將JDBC數據類型綁定到存儲過程並返回預期數據類型。
getXXX()
方法從
OUT
參數中檢索該值。 此方法將檢索到的SQL類型的值轉換爲對應的Java數據類型。