一、概念:
Java DataBase Connectivity Java數據庫連接, Java語言操作數據庫
- 它是Java中的數據庫連接規範。這個API由java.sql.* , javax.sql.* 包中的一些類和接口組成,它爲Java開發人員操作數據庫提供了一個標準的API,可以爲多種關係數據庫提供統一訪問。
二、原理:
JDBC優勢:
- Java語言訪問數據庫操作完全面向抽象接口編程
- 開發數據庫應用不用限定在特定數據庫廠商的API
- 程序的可移植性大大增強
三、快速入門:
JDBC使用步驟總結
- 創建數據庫連接Connection
- 創建操作命令Statement
- 使用操作命令來執行SQL
- 處理結果集ResultSet
- 釋放資源
(1).導入驅動jar包
mysql-connector- java-5.1.37-bin.jar
①複製mysql- connector- java-5.1.37-bin. jac到項目的libs目錄下
②右鍵–>add as Library|
(2).建立數據庫連接
①.註冊驅動
注意: mysq15之後的驅動jar包可以省略註冊驅動的步驟。
Class.forName("com.mysql.jdbc.Driver");
②獲取數據庫連接對象Connection
DriverManager :驅動管理對象
MySQL數據連接的URL參數格式如下:
方法①:
Connectionconnection=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?
user=root&password=root&useUnicode=true&characterEncoding=UTF-8");
jdbc:mysql://服務器地址:端口/數據庫名?參數名=參數值
方法②:
參數:
- url :指定連接的路徑
語法: jdbc :mysql://ip地址(域名):端口號/數據庫名稱
例子: jdbc ; mysql://localhost: 3306/db3
細節:如果連接的是本機mysq1服務器,並且mysq1服務默認端口是3306,則ur1可以簡寫爲: jdbc :mysql:///數據庫名稱
- user :用戶名
password :密碼
(3).創建操作命令
①定義sql
String sql ="update account set balance = 500
where id = 1;
②獲取執行sq1語句的對象statement
Statement statement = connection.createStatement();
(4).執行SQL語句
ResultSet resultSet= statement.executeQuery(
"select id, sn, name, qq_mail, classes_id from student");
(5).處理結果
while (resultSet.next()) {
int id = resultSet.getInt("id");
String sn = resultSet.getString("sn");
String name = resultSet.getString("name");
int classesId =resultSet.getInt("classes_id");
System.out.println(String.format("Student: id=%d, sn=%s, name=%s,
classesId=%s", id, sn, name, classesId));
}
(6).釋放資源(關閉結果集,命令,連接)
//關閉結果集
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
//關閉結果集
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
//關閉連接命令
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
四、詳細介紹
JDBC常用接口和類
1、JDBC API
在Java JDBC編程中對數據庫的操作均使用JDK自帶的API統一處理,通常與特定數據庫的驅動類是完全解耦的。所以掌握Java JDBC API (位於java.sql 包下) 即可掌握Java數據庫編程。
2、Connection :數據庫連接對象
(1)、Connection接口實現類由數據庫提供,獲取Connection對象通常有兩種方式:
①通過DriverManager(驅動管理類)的靜態方法獲取:
// 加載JDBC驅動程序
Class.forName(“com.mysql.jdbc.Driver”);
// 創建數據庫連接 Connection connection = DriverManager.getConnection(url);
(2)、一種是通過DataSource(數據源)對象獲取。實際應用中會使用DataSource對象。
DataSource ds = new MysqlDataSource();
((MysqlDataSource) ds).setUrl("jdbc:mysql://localhost:3306/test");
((MysqlDataSource) ds).setUser("root");
((MysqlDataSource) ds).setPassword("root");
Connection connection = ds.getConnection();
以上兩種方式的區別是:
- DriverManager類來獲取的Connection連接,是無法重複利用的,每次使用完以後釋放資源時,通過connection.close()都是關閉物理連接。
- DataSource提供連接池的支持。連接池在初始化時將創建一定數量的數據庫連接,這些連接
是可以複用的,每次使用完數據庫連接,釋放資源調用connection.close()都是將
Conncetion連接對象回收。
(2)功能:
①.獲取執行sql的對象
Statement對象主要是將SQL語句發送到數據庫中。JDBC API中主要提供了三種Statement對象。
主要掌握兩種執行SQL的方法:
①executeQuery() 方法執行後返回單個結果集的,通常用於select語句
②executeUpdate()方法返回值是一個整數,指示受影響的行數,通常用於update、insert、delete
語句
②.管理事務:
開啓事務: setAutoCommit(boolean autoCommit) : 調用該方法設置參數爲false,即開啓事務;
提交事務: commit()
回滾事務: rollback()
3、ResultSet對象
ResultSet對象它被稱爲結果集,它代表符合SQL語句條件的所有行,並且它通過一套getXXX方法提供了對這些行中數據的訪問。
- boolean next(): 遊標向下移動-行,判斷當前行是否是最後一 行末尾(是否有數據),如果是,則返回false,如果不是則返回true
- getxxx(參數) :獲取數據
xxx:代表數據類型
如: int getInt(),string getString()
參數:
- int :代表列的編號,從1開始
如:getString(1) - string :代表列名稱。
如 : getDouble( “balance”)
【使用步驟】
1.遊標向下移動一行
2.判斷是否有數據
3.獲取數據
//循環判斷遊標是否是最後一行末尾
while(rs. .next(){
//獲取數據
int id = rs.getInt(1);
String name = rs. getString("name" );
double balance = rs. getDouble(3);
System. out.println(id +---”+ name +
+ balance);
}