JDBC 標準,在代碼中的表現,一組 interface(接口),實現了這些接口的類 Driver (驅動)
Jar 包,是一個zip壓縮包,按一定的標準管理起來的一組類文件(*.class)
搭建實用JDBC環境的步驟
1.在根目錄下新建 lib 目錄
2.把 mysql-jdbc 的 jar 包複製到 lib 目錄;
3.選擇 File 下的 Project Structure
4.選擇 libraries 下的 + ,然後點擊 Java
5.選擇新建的 lib 目錄,繼續點OK
**目的:**讓 IDER(javac/java) 可以找到 MySQL-Driver 的類文件(*.class)
**驗證:**這些類在代碼中是否可以正常導入:
import com.mysql.jdbc.Driver
代碼演示 JDBC 的套路
準備工作:
在 MySQL 上手動建立一個數據庫 java20_0210:
create database java20_0210;
use java20_0210;
select database();
建立一個測試用表:
create table users(
id INT, name VARCHAR(255)
);
通過JDBC 進行 mysql 連接:
JDBC裏面提供了兩套 API :
- DriverManager
- DataSource
步驟:
- 註冊驅動
(JDBC-Driver)Class.forName(“com.mysql.jdbc.Driver”);
2.獲取一條 MySQL 的網絡連接對象(TCP 連接)
a) 配置連接 URL(一般大家需要修改的,只有默認數據庫)
3. 通過連接獲取一條語句對象(每個 statement 對象只能用於一條語句)
import java.sql.Statement;
Statement statement = connection.createStatement();
方法一:
```java
import java.sql.Connection;
String "jdbc:mysql://127.0.0.1:3306/java20_0210?useSSL=false&characterEncoding=utf8";
String user = "root"; //連接 mysql 的用戶名
String passwd = ""; //連接 mysql 的密碼
Connection connection = DriverManager.getConnection(
url,user,password);
方法二:
```java
package com.edu.Test0531;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
public class TestJDBC {
public static void main(String[] args) {
//1.創建DataSource對象
DataSource dataSource = new MysqlDataSource();
//接下來需要針對 DataSource 進行一些配置,以便方便以後能夠順利的訪問到數據庫服務器
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_0531?characterEncoding=utf-8&useSSL=true");
}
}
注意:
建立連接(Connection),不能寫作建立鏈接(Link)。
4.執行具體的 增/刪/查/改操作
Insert 增
Statement statement = connection.creatrStatement();
String sql = "INSERT INTO users(id,name)VALUES(1,'XXX')";
statement.executeUpdata(sql); //通過 statement 對象來執行 SQL 語句
Update 改
- 創建DataSource 對象
- 創建 Connection 對象
Statement statement = connection.createStatement();
String sql = "INSERT INTO users(id,name)VALUES(1,'YYY')";
statement.executeUpdata(sql);
Delete 刪
Statement statement = connection.createStatement();
String sql = "Delect FROM users WHERE id = 1";
statement.executeUpdata(sql);
Select 查
1.需要拿到結果集對象
2.從結果集對象中遍歷獲取數據
rs.next() 會讓結果集中的遊標下移一行,返回 ture ,表示遊標當前行有數據,返回 false ,表示遊標已經超過結果範圍了
3.銷燬結果對象
注意:列的下標不是從 0 開始的
Statement statement = connection.createStatement();
String sql = "SELECT id,name FROM users";
ResultSet resultSet = statement.executeQuery(sql);
List<String>nameList = new ArryList<>();
while(resultSet.next()){
/*
需要不同類型,調用不同方法
int r = resultSet.getInt();
long r = resultSet.getLong();
String r = resultSet.getString();
*/
/*
int id = resultSet.getInt(1); //下標是1開始,從0
int id = resultSet.getINT("id");//通過字段名稱獲取
*/
int id = resultSet.getInt(1);
String name = resultSet.getString("name");
//結果集馬上需要銷燬,所以通過 List 保存結果
nameList.add(name);
System.out.println(id + "," + name);
}
5.銷燬
resultSet.close();
statement.close();
總結:
1.註冊 Driver
2.獲取 Connection 對象
3.獲取 Statement 對象
4.執行 CRUD sql(Select 有點特殊,有個結果集問題)
1)Insert/Update/Delete executeUpdate (建議)
2)Select executeQuery (建議)
5.銷燬資源(反向順序)
注意:
Driver 註冊只需要一次
Connection 一般也只需要一次(特殊情況下多個連接)
可以獲取多個 Statement
每個 Statement 只能執行一條 SQL
檢測:
在 cmd 上輸入:
Select * FROM users; //查看錶數據