一、JDBC概述
JDBC(Java Database Connectivity)即Java資料庫連接,是Java語言中的一套資料庫訪問API,可以讓Java應用程序通過SQL語句操作資料庫,如查詢、插入、刪除、更新等操作。JDBC的作用是將Java代碼和資料庫進行交互連接,實現數據的增刪改查,方便編程人員對數據進行操作。
JDBC是一個標準的API,該API定義了一系列的Java類和介面,可以被用來訪問和管理不同類型的資料庫,如MySQL、Oracle、SQL Server等。
下面是一個最簡單的JDBC程序示例:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; import java.sql.SQLException; public class JDBCTest { public static void main(String[] args) throws SQLException { //1. 載入資料庫驅動 Class.forName("com.mysql.jdbc.Driver"); //2. 建立資料庫連接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","password"); //3. 創建Statement對象 Statement stmt = conn.createStatement(); //4. 執行查詢語句 ResultSet rs = stmt.executeQuery("select * from test_table"); //5. 處理結果集 while(rs.next()){ System.out.println(rs.getString("name")); } //6. 關閉連接 rs.close(); stmt.close(); conn.close(); } }
二、JDBC連接資料庫步驟及常用API
與大部分的Java API一樣,JDBC也包含了一些常用類和介面。這些類和介面通常被用來連接資料庫、發送SQL命令以及獲取結果集等操作,下面是JDBC的步驟及常用API。
1. 載入資料庫驅動
在使用JDBC連接資料庫之前,需要先載入資料庫的驅動程序,驅動程序提供了一個標準介面來連接不同的資料庫。在載入驅動時,需要使用Class.forName()
方法,表示當前的JVM會載入並註冊驅動程序。
//載入驅動程序 Class.forName("com.mysql.jdbc.Driver");
2. 建立資料庫連接
在驅動程序註冊之後,需要使用DriverManager.getConnection()
方法來建立資料庫連接,該方法會返回一個連接對象 Connection。
//建立連接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","password");
3. 創建Statement對象
在建立了資料庫連接之後,需要使用Statement對象來發送SQL語句並執行查詢操作。Statement對象通常由資料庫連接對象創建。
//創建Statement對象 Statement stmt = conn.createStatement();
4. 執行SQL語句
創建Statement對象之後,可以使用executeQuery()
、executeUpdate()
和execute()
方法來執行SQL語句,並獲取查詢結果。
其中,executeQuery()
方法用於執行查詢語句,返回一個ResultSet結果集對象;executeUpdate()
方法用於執行資料庫更新操作,如INSERT、UPDATE或DELETE,返回更新的行數;execute()
方法可以執行任意SQL語句,但不返回查詢結果。
//執行查詢語句 ResultSet rs = stmt.executeQuery("select * from test_table"); //執行更新操作 int count = stmt.executeUpdate("update test_table set name = 'test' where id = 1");
5. 處理結果集
在執行了SQL查詢語句並獲取到了結果集之後,需要使用ResultSet對象來遍歷並處理查詢結果。
ResultSet對象的常用方法有:
next()
:返回一個Boolean類型值,表示是否存在更多的結果行。getString()
:返回一個字元串類型的值,表示當前行指定列的值。getInt()
:返回一個整數類型的值,表示當前行指定列的值。- 其他類型的獲取方法,如getBoolean()、getDouble()等。
//遍歷結果集 while(rs.next()){ System.out.println(rs.getString("name")); }
6. 關閉連接及釋放資源
在使用完資料庫連接、Statement對象、ResultSet對象之後,需要及時地將其關閉並釋放資源。
//關閉資源 rs.close(); stmt.close(); conn.close();
三、JDBC事務管理
在JDBC中,事務是一個資料庫操作序列,它可以被視為單個工作單元。在JDBC中,事務是由Connection對象的beginTransation()、commit()和rollback()方法支持的。
在JDBC事務中,一般採用「四大特性」(ACID)來描述事務的屬性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。
下面是一個簡單的JDBC事務管理程序示例:
import java.sql.*; public class JDBCTransactionTest { public static void main(String[] args) throws SQLException, ClassNotFoundException { //1. 載入驅動程序 Class.forName("com.mysql.jdbc.Driver"); //2. 建立連接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","password"); //3. 開始事務 try{ conn.setAutoCommit(false); //將自動提交設置為 false Statement stmt = conn.createStatement(); //執行操作 stmt.executeUpdate("update account set balance = balance - 500 where name = 'A'"); stmt.executeUpdate("update account set balance = balance + 500 where name = 'B'"); //手動提交事務 conn.commit(); stmt.close(); }catch(SQLException e){ //回滾事務 conn.rollback(); }finally{ conn.close(); } } }
四、JDBC連接池
JDBC連接池(Connection Pool),是指在應用程序啟動時,預先創建一定數量的資料庫連接並放入一個連接池中,當應用程序需要連接資料庫時,直接從連接池中取出連接,使用完畢後再將連接放回連接池中。這樣可以降低每次連接資料庫的時間成本,提高應用程序的性能。
JDBC連接池最為常見的實現方式是使用Apache Commons DBCP(DataBase Connection Pool)組件,該組件可以將連接池集成到Tomcat、WebLogic、Jboss等Web容器中。
//創建BasicDataSource對象,設置資料庫連接相關參數 BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/test"); dataSource.setUsername("root"); dataSource.setPassword("password"); //使用連接池獲取資料庫連接 Connection conn = dataSource.getConnection(); //釋放連接到連接池 conn.close();
五、總結
JDBC是一種Java訪問資料庫的標準API,可以通過JDBC連接不同類型的資料庫,並通過SQL語句操作資料庫。在JDBC中,常用的API包括驅動程序載入、建立資料庫連接、創建Statement對象、執行SQL語句並處理結果集等操作,同時,JDBC還支持事務管理和連接池技術等。使用JDBC可以更方便地實現與資料庫的交互。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/304186.html