數據庫——JDBC

一、概念:

Java DataBase Connectivity Java數據庫連接, Java語言操作數據庫

  • 它是Java中的數據庫連接規範。這個API由java.sql.* , javax.sql.* 包中的一些類和接口組成,它爲Java開發人員操作數據庫提供了一個標準的API,可以爲多種關係數據庫提供統一訪問。

二、原理:
在這裏插入圖片描述
JDBC優勢:

  1. Java語言訪問數據庫操作完全面向抽象接口編程
  2. 開發數據庫應用不用限定在特定數據庫廠商的API
  3. 程序的可移植性大大增強

三、快速入門:

JDBC使用步驟總結

  1. 創建數據庫連接Connection
  2. 創建操作命令Statement
  3. 使用操作命令來執行SQL
  4. 處理結果集ResultSet
  5. 釋放資源

(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();

以上兩種方式的區別是:

  1. DriverManager類來獲取的Connection連接,是無法重複利用的,每次使用完以後釋放資源時,通過connection.close()都是關閉物理連接。
  2. 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()

參數:

  1. int :代表列的編號,從1開始
    如:getString(1)
  2. 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);

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章