JDBC 鏈接

 

在這一小節,咱們將學習DriverManager對象和connection對象。html

DriverManager對象用於從驅動裏獲取一個connection對象。java

而connection對象功能頗多,可管理鏈接、管理事務、創建語句對象等。mysql


加載JDBC驅動程序

在打開與數據庫的JDBC鏈接以前,您須要作的第一件事是加載數據庫的JDBC驅動程序。如今已經不須要程序員作這些事啦,由於從Java 6開始,Java 已經內置這步操做。程序員

Java以前是這樣加載JDBC驅動程:sql

語法:數據庫

1
Class.forName( "driverClassName" );

加載MySQL數據庫:ide

1
Class.forName("com.mysql.jdbc.Driver");

打開JDBC鏈接

能夠經過調用java.sql.DriverManager類方法getConnection()打開JDBC Connection。 這種方法有三種花樣。學習

使用URL打開鏈接

第一種方法僅將數據庫的URL做爲參數。url

1
2
3
String url = "jdbc:mysql://127.0.0.1:3306/dbname" ;
Connection connection =
     DriverManager.getConnection(url);

url是數據庫的URL。不一樣的數據庫url值不同,上面是MySQL數據庫的URL。spa

使用URL,用戶名和密碼打開鏈接

第二種方法將數據庫的URL,用戶名和密碼做爲參數。

1
2
3
4
5
String url = "jdbc:mysql://127.0.0.1:3306/dbname" ;
String user = "root" ;
String password = "123456" ;
Connection connection =
     DriverManager.getConnection(url,user,password);

user和password參數是數據庫的用戶名和密碼。

使用URL和Properties對象打開鏈接

第三種方法是將數據庫URL和Properties對象做爲參數

1
2
3
4
5
6
String url = "jdbc:mysql://127.0.0.1:3306/dbname" ;
Properties properties = new Properties( );
properties.put( "user" , "root" );
properties.put( "password" , "123456" );
Connection connection =
     DriverManager.getConnection(url, properties);

 Properties對象用於在打開鏈接時傳遞數據庫所需的特殊屬性。    


關閉JDBC鏈接

當JDBC操做完成(執行完查詢、刪除、修改)後,應關閉它。

關閉鏈接有兩種花樣。

普通的close方法

這是經過調用Connection.close()方法完成的,以下所示:

1
connection.close();

數據庫鏈接佔用了必定數量的資源,所以關閉JDBC鏈接很是重要。

經過Try-With-Resources關閉鏈接

能夠經過Java 7中添加的Java Try-with-resources自動關閉JDBC Connection 。下面的示例演示那如何使用Try-with-resources關閉鏈接:

1
2
3
4
5
6
7
8
9
String url = "jdbc:mysql://127.0.0.1:3306/dbname" ;
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對象

Statement對象可用於對數據庫執行SQL更新 ,或對數據庫執行SQL查詢 。

1
Statement statement =connection.createStatement();

PreparedStatement對象

PreparedStatement對象,叫預處理對象,PreparedStatement對象能夠對數據庫執行SQL更新,或對數據庫執行SQL查詢。

1
PreparedStatement pre = connection.prepareStatement(sql);

元數據對象

Connection 對象能夠獲取DatabaseMetaData對象,DatabaseMetaData對象能夠獲取數據庫的相關信息,好比:表、主鍵、列、索引等。

1
DatabaseMetaData metaData = connection.getMetaData();
相關文章
相關標籤/搜索