數據庫驅動、JDBC簡介及常用方法
SUN公司為統一對數據庫的操作,定義了一套Java操作數據庫的規范,稱之為JDBC。
JDBC全稱為:Java Data Base Connectivity(java數據庫連接),它主要由接口組成。

組成JDBC的2個包:
1、java.sql
;
2、javax.sql
開發JDBC應用需要以上2個包的支持外,還需要導入相應JDBC的數據庫實現(即數據庫驅動)。
編寫一個程序,這個程序從user表中讀取數據,并打印在命令行窗口中。
一、搭建實驗環境 :
1、在mysql中創建一個庫,并創建user表和插入表的數據。
2、新建一個Java工程,并導入數據驅動。
二、編寫程序,在程序中加載數據庫驅動
Class.forName(“com.mysql.jdbc.Driver”);
DriverManager.registerDriver(Driver?driver)
三、建立連接(Connection)
Connection conn = DriverManager.getConnection(url,user,pass);
四、創建用于向數據庫發送SQL的Statement對象,并發送sql
Statement st = conn.createStatement();
ResultSet rs = st.excuteQuery(sql);
五、從代表結果集的ResultSet中取出數據,打印到命令行窗口
六、斷開與數據庫的連接,并釋放相關資源
數據庫URL
URL用于標識數據庫的位置,程序員通過URL地址告訴JDBC程序連接哪個數據庫,URL的寫法為:jdbc:mysql:[]//localhost:3306/test ?參數名:參數值
常用數據庫URL地址的寫法:
Oracle寫法:
jdbc:oracle:thin:@localhost:1521:sid
SqlServer—jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=sid
MySql—jdbc:mysql://localhost:3306/sid
Mysql的url地址的簡寫形式: jdbc:mysql:///sid
常用屬性:useUnicode=true&characterEncoding=UTF-8
程序詳解—DriverManager:
Jdbc程序中的DriverManager用于加載驅動,并創建與數據庫的鏈接,這個API的常用方法:
DriverManager.registerDriver(new Driver()),注意:在實際開發中,并不推薦采用這個方法注冊驅動。查看Driver的源代碼可以看到,如果采用此種方式,會導致驅動程序注冊兩 次,也就是在內存中會有兩個Driver對象。
推薦方式:Class.forName(“com.mysql.jdbc.Driver”);采用此種方式不會導致驅動對象在內存中重復出現,并且采用此 種方式,程序僅僅只需要一個字符串,不需要import驅動的API,這樣可使程序不依賴具體的驅動,使程序的靈活性更高。
DriverManager.getConnection(url, user, password),根據url獲取數據庫的鏈接。
程序詳解—Connection:
Jdbc程序中的Connection,它用于代表數據庫的鏈接,Collection是數據庫編程中最重要的一個對象,客戶端與數據庫所有交互都是通過connection對象完成的,這個對象的常用方法:
createStatement():創建向數據庫發送sql的statement對象。
prepareStatement(sql) :創建向數據庫發送預編譯sql的PrepareSatement對象。
prepareCall(sql):創建執行存儲過程的callableStatement對象。
setAutoCommit(boolean?autoCommit):設置事務是否自動提交。
commit() :在鏈接上提交事務。
rollback() :在此鏈接上回滾事務。
程序詳解—Statement:
dbc程序中的Statement對象用于向數據庫發送SQL語句, Statement對象常用方法:
execute(String sql):用于向數據庫發送任意sql語句
executeQuery(String?sql) :只能向數據發送查詢語句。
executeUpdate(String?sql):只能向數據庫發送insert、update或delete語句
addBatch(String?sql) :把多條sql語句放到一個批處理中。
executeBatch():向數據庫發送一批sql語句執行。
程序詳解—ResultSet:
dbc程序中的ResultSet用于代表Sql語句的執行結果。Resultset封裝執行結果時,采用的類似于表格的方式。ResultSet
對象維護了一個指向表格數據行的游標,初始的時候,游標在第一行之前,調用ResultSet.next()
方法,可以使游標指向具體的數據行,進行調用方法獲取該行的數據。
ResultSet既然用于封裝執行結果的,所以該對象提供的都是用于獲取數據的get方法:
獲取任意類型的數據
getObject(int index) getObject(string columnName)
獲取指定類型的數據,例如:
getString(int index)
getString(String columnName)
ResultSet還提供了對結果集進行滾動的方法:
next():移動到下一行
Previous():移動到前一行
absolute(int row):移動到指定行 beforeFirst():移動resultSet的最前面。
afterLast() :移動到resultSet的最后面。
程序詳解—釋放資源:
Jdbc程序運行完后,切記要釋放程序在運行過程中,創建的那些與數據庫進行交互的對象,這些對象通常是ResultSet, Statement和Connection對象。
特別是Connection對象,它是非常稀有的資源,用完后必須馬上釋放,如果Connection不能及時、正確的關閉,極易導致系統宕機。Connection的使用原則是盡量晚創建,盡量早的釋放。
為確保資源釋放代碼能運行,資源釋放代碼也一定要放在finally語句中。
使用JDBC對數據庫進行CRUD:
Jdbc中的statement對象用于向數據庫發送SQL語句,想完成對數據庫的增刪改查,只需要通過這個對象向數據庫發送增刪改查語句即可。
Statement對象的executeUpdate方法,用于向數據庫發送增、刪、改的sql語句,executeUpdate執行完后,將會返回一個整數(即增刪改語句導致了數據庫幾行數據發生了變化)。
Statement.executeQuery方法用于向數據庫發送查詢語句,executeQuery方法返回代表查詢結果的ResultSet對象。
CRUD操作-create
使用executeUpdate(String sql)方法完成數據添加操作,示例操作:
Statement st = conn.createStatement();
String sql = "insert into user(….) values(…..) ";
int num = st.executeUpdate(sql);
if(num>0){
System.out.println("插入成功!!!");
}
CRUD操作-updata
使用executeUpdate(String sql)方法完成數據修改操作,示例操作:
Statement st = conn.createStatement();
String sql = “update user set name=‘’ where name=‘’";
int num = st.executeUpdate(sql);
if(num>0){
System.out.println(“修改成功!!!");
}
CRUD操作-delete
使用executeUpdate(String sql)方法完成數據刪除操作,示例操作:
Statement st = conn.createStatement();
String sql = “delete from user where id=1;
int num = st.executeUpdate(sql);
if(num>0){
System.out.println(“刪除成功!!!");
}
CRUD操作-read
使用executeQuery(String sql)方法完成數據查詢操作,示例操作:
Statement st = conn.createStatement();
String sql = “select * from user where id=1;
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
//根據獲取列的數據類型,分別調用rs的相應方法
//映射到java對象中
}