在這一小節,咱們將學習DriverManager對象和connection對象。html
DriverManager對象用於從驅動裏獲取一個connection對象。java
而connection對象功能頗多,可管理鏈接、管理事務、創建語句對象等。mysql
在打開與數據庫的JDBC鏈接以前,您須要作的第一件事是加載數據庫的JDBC驅動程序。如今已經不須要程序員作這些事啦,由於從Java 6開始,Java 已經內置這步操做。程序員
Java以前是這樣加載JDBC驅動程:sql
語法:數據庫
1
|
Class.forName(
"driverClassName"
);
|
加載MySQL數據庫:ide
1
|
Class.forName("com.mysql.jdbc.Driver");
|
能夠經過調用java.sql.DriverManager類方法getConnection()打開JDBC Connection。 這種方法有三種花樣。學習
第一種方法僅將數據庫的URL做爲參數。url
1
2
3
|
Connection connection =
DriverManager.getConnection(url);
|
url是數據庫的URL。不一樣的數據庫url值不同,上面是MySQL數據庫的URL。spa
第二種方法將數據庫的URL,用戶名和密碼做爲參數。
1
2
3
4
5
|
String user =
"root"
;
String password =
"123456"
;
Connection connection =
DriverManager.getConnection(url,user,password);
|
user和password參數是數據庫的用戶名和密碼。
第三種方法是將數據庫URL和Properties對象做爲參數
1
2
3
4
5
6
|
Properties properties =
new
Properties( );
properties.put(
"user"
,
"root"
);
properties.put(
"password"
,
"123456"
);
Connection connection =
DriverManager.getConnection(url, properties);
|
Properties對象用於在打開鏈接時傳遞數據庫所需的特殊屬性。
當JDBC操做完成(執行完查詢、刪除、修改)後,應關閉它。
關閉鏈接有兩種花樣。
這是經過調用Connection.close()方法完成的,以下所示:
1
|
connection.close();
|
數據庫鏈接佔用了必定數量的資源,所以關閉JDBC鏈接很是重要。
能夠經過Java 7中添加的Java Try-with-resources自動關閉JDBC Connection 。下面的示例演示那如何使用Try-with-resources關閉鏈接:
1
2
3
4
5
6
7
8
9
|
String user =
"root"
;
String password =
"123456"
;
try
(Connection connection =
DriverManager.getConnection(url, user, password)) {
//其它業務代碼
}
|
Connection在try塊的括號內打開。
在try語句塊中,能夠像往常同樣使用數據庫鏈接。
一旦執行退出try塊,Connection將自動關閉。
這樣就不會忘記本身關閉Connection。
事務的概念是:全部的操做要麼同時成功,要麼同時失敗。
在JDBC裏執行事務須要兩步:先開戶事務,再提交事務。若是事務失敗,就產生事務回滾(全部的操做都捎回)。
在JDBC裏有兩種方式執行事務:一是自動執行,二是手動執行。
Connection默認是自動提交事務,也能夠手動開戶自動提交事務。
1
|
connection
.setAutoCommit(
true
);
|
Connection setAutoCommit()方法,當參雜是false時,是手動提交事務。
在手動提交模式,則必須經過調用Connection commit()方法顯式提交每一個數據庫事務。
1
2
3
4
5
|
connection.setAutoCommit(
false
);
// 其它業務代碼
connection.commit();
|
若是事務執行失敗時,就會觸發回滾操做,全部的操做都取消。
1
2
3
4
5
6
7
8
9
|
try
{
connection.setAutoCommit(
false
);
//開啓手動提交事務
// 其它業務代碼
connection.commit();
}
catch
(SQLException e) {
// 產生異常
connection.rollback();
// 事務回滾
}
|
Connection 可創建Statement對象和PreparedStatement對象。
Statement對象可用於對數據庫執行SQL更新 ,或對數據庫執行SQL查詢 。
1
|
Statement statement =connection.createStatement();
|
PreparedStatement對象,叫預處理對象,PreparedStatement對象能夠對數據庫執行SQL更新,或對數據庫執行SQL查詢。
1
|
PreparedStatement pre = connection.prepareStatement(sql);
|
Connection 對象能夠獲取DatabaseMetaData對象,DatabaseMetaData對象能夠獲取數據庫的相關信息,好比:表、主鍵、列、索引等。
1
|
DatabaseMetaData metaData = connection.getMetaData();
|