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; //查看表数据