Java的JDBC編程使用之連接Mysql數(shù)據(jù)庫
一、Java的數(shù)據(jù)庫編程:JDBC
JDBC,即Java Database Connectivity,java數(shù)據(jù)庫連接。是一種用于執(zhí)行SQL語句的Java API,它是 Java中的數(shù)據(jù)庫連接規(guī)范。這個API由 java.sql.*,javax.sql.* 包中的一些類和接口組成,它為Java 開發(fā)人員操作數(shù)據(jù)庫提供了一個標準的API,可以為多種關系數(shù)據(jù)庫提供統(tǒng)一訪問。
二、JDBC工作原理
JDBC 為多種關系數(shù)據(jù)庫提供了統(tǒng)一訪問方式,作為特定廠商數(shù)據(jù)庫訪問API的一種高級抽象,它主要包 含一些通用的接口類。
JDBC訪問數(shù)據(jù)庫層次結構:

JDBC優(yōu)勢:
- Java語言訪問數(shù)據(jù)庫操作完全面向抽象接口編程
- 開發(fā)數(shù)據(jù)庫應用不用限定在特定數(shù)據(jù)庫廠商的API
- 程序的可移植性大大增強
三、JDBC使用
- 準備數(shù)據(jù)庫驅動包,并添加到項目的依賴中:
在項目中創(chuàng)建文件夾lib,并將依賴包mysql-connector-java-5.1.47.jar復制到lib中。再配置該jar 包到本項目的依賴中:右鍵點擊項目Open Module Settings,在Modules中,點擊項目,配置 Dependencies,點擊+,JARS or Directories,將該lib文件夾配置進依賴中,表示該文件夾下的 jar包都引入作為依賴。
- 建立數(shù)據(jù)庫連接
MySQL數(shù)據(jù)連接的URL參數(shù)格式如下:
jdbc:mysql://服務器地址:端口/數(shù)據(jù)庫名?參數(shù)名=參數(shù)值
// 加載JDBC驅動程序:反射,這樣調用初始化com.mysql.jdbc.Driver類,即將該類加載到JVM方法
區(qū),并執(zhí)行該類的靜態(tài)方法塊、靜態(tài)屬性。
Class.forName("com.mysql.jdbc.Driver");
// 創(chuàng)建數(shù)據(jù)庫連接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?
user=root&password=root&useUnicode=true&characterEncoding=UTF-8");
- 創(chuàng)建操作命令(Statement)
//3.構造一個Sql String sql =" insert into stu(id,name,age) values(1,zhang,3)"; //需要把 Sql語句轉化為對象 PreparedStatement statement = connection.prepareStatement(sql);
- 使用操作命令來執(zhí)行SQL
// 查詢操作 preparedStatement.executeQuery(); // 新增、修改、刪除操作 preparedStatement.executeUpdate();
- 處理結果集ResultSet.
//接受結果集合
ResultSet resultSet = statement.executeQuery();
//結果集遍歷
while (resultSet.next()){
//移動光標
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println(id+" "+name+" "+age+" ");
}- 釋放資源
try {
if(resultSet != null){
resultSet.close();
}
if(preparedStatement != null){
preparedStatement.close();
}
if(connection != null){
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("數(shù)據(jù)庫錯誤");
}
四、JDBC使用步驟總結
1. 創(chuàng)建數(shù)據(jù)庫連接Connection
2. 創(chuàng)建操作命令Statement
3. 使用操作命令來執(zhí)行SQL
4. 處理結果集ResultSet
5. 釋放資源
五、JDBC常用接口和類
5.1 JDBC API
在Java JDBC編程中對數(shù)據(jù)庫的操作均使用JDK自帶的API統(tǒng)一處理,通常與特定數(shù)據(jù)庫的驅動類是完全 解耦的。所以掌握Java JDBC API (位于 java.sql 包下) 即可掌握Java數(shù)據(jù)庫編程。
5.2 數(shù)據(jù)庫連接Connection
Connection接口實現(xiàn)類由數(shù)據(jù)庫提供,獲取Connection對象通常有兩種方式:
- 一種是通過DriverManager(驅動管理類)的靜態(tài)方法獲取:
// 加載JDBC驅動程序
Class.forName("com.mysql.jdbc.Driver");
// 創(chuàng)建數(shù)據(jù)庫連接
Connection connection = DriverManager.getConnection(url);
- 一種是通過DataSource(數(shù)據(jù)源)對象獲取。實際應用中會使用DataSource對象
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://localhost:3306/db1?serverTimezone=UTC");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");以上兩種方式的區(qū)別是:
1. DriverManager類來獲取的Connection連接,是無法重復利用的,每次使用完以后釋放資源 時,通過connection.close()都是關閉物理連接。
2. DataSource提供連接池的支持。連接池在初始化時將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接,這些連接 是可以復用的,每次使用完數(shù)據(jù)庫連接,釋放資源調用connection.close()都是將 Conncetion連接對象回收。
5.3 Statement對象
Statement對象主要是將SQL語句發(fā)送到數(shù)據(jù)庫中。JDBC API中主要提供了三種Statement對象

主要掌握兩種執(zhí)行SQL的方法:
- executeQuery() 方法執(zhí)行后返回單個結果集的,通常用于select語句
- executeUpdate()方法返回值是一個整數(shù),指示受影響的行數(shù),通常用于update、insert、delete 語句
5.4 ResultSet對象
ResultSet對象它被稱為結果集,它代表符合SQL語句條件的所有行,并且它通過一套getXXX方法提供 了對這些行中數(shù)據(jù)的訪問。
ResultSet里的數(shù)據(jù)一行一行排列,每行有多個字段,并且有一個記錄指針,指針所指的數(shù)據(jù)行叫做當 前數(shù)據(jù)行,我們只能來操作當前的數(shù)據(jù)行。我們如果想要取得某一條記錄,就要使用ResultSet的next() 方法 ,如果我們想要得到ResultSet里的所有記錄,就應該使用while循環(huán)。
六、示例代碼
import com.mysql.cj.jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TestJDBC {
public static void main(String[] args) throws SQLException {
// MysqlDataSource dataSource = new MysqlDataSource();
//dataSource.setUrl();
//1. 創(chuàng)建數(shù)據(jù)源,即獲取數(shù)據(jù)庫的位置
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://localhost:3306/db1?serverTimezone=UTC");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
// 2 .和數(shù)據(jù)庫服務器建立連接
Connection connection = dataSource.getConnection();
//3.構造一個Sql
String sql =" insert into stu(id,name,age) values(?,?,?)";
// String sql =" insert into stu(id,name,age) values(1,zhang,3)";
//需要把 Sql語句轉化為對象
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,66);
statement.setString(2,"a");
statement.setInt(3,7);
//4.構造好的sql 發(fā)送給服務器;
int n = statement.executeUpdate();
System.out.println("n:"+ n);
//5.最后一步 釋放資源
statement.close();
connection.close();
}
}
總結
到此這篇關于Java的JDBC編程使用之連接Mysql數(shù)據(jù)庫的文章就介紹到這了,更多相關 JDBC連接Mysql數(shù)據(jù)庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mybatis中SqlMapper配置的擴展與應用詳細介紹(1)
這篇文章主要介紹了Mybatis中SqlMapper配置的擴展與應用(1)的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-11-11
解決maven update project 后項目jdk變成1.5的問題
下面小編就為大家?guī)硪黄鉀Qmaven update project 后項目jdk變成1.5的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起 小編過來看看吧2016-11-11
SpringCloud可視化鏈路追蹤系統(tǒng)Zipkin部署過程
這篇文章主要介紹了SpringCloud可視化鏈路追蹤系統(tǒng)Zipkin部署過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
Springboot如何使用OSHI獲取和操作系統(tǒng)和硬件信息
這篇文章主要介紹了Springboot如何使用OSHI獲取和操作系統(tǒng)和硬件信息問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10

