Java-JDBC 配置和使用

下载 JDBC Jar 包

Mysql JDBC 地址:https://dev.mysql.com/downloads/connector/j/

  • 选择 Platform Independent 下载并解压得到 .jar 包,放入自己 Jar 文件夹中
    image

将 Jar 库导入到 Idea

image

注册驱动并获取连接

从 JBC3 开始,目前已经普遍使用的版本。可以不用注册驱动而直接使用。
Class.forName 这句话可以省略。

1
2
3
// 注册驱动 从JDBC3开始这步可以省略
// mysql8 需要cj包中的驱动
Class.forName("com.mysql.cj.jdbc.Driver");

获得连接

  • Connection 接口,代表一个连接对像具体的实现类由数据库的厂商实现。
  • 使用 DriverManage r 类的静态方法 getConnection () 可以获取数据库的连接。
    获取连接的静态方法说明
    Connection getConnection(String url, String user, String password)通过连接字符串和用户名,密码来获取数据库连接对象
  1. getConnection 方法 3 个连接参数说明

    连接参数说明
    user登录用户名
    password登录密码
    urlmySql URL 的格式
    jdbc: mysql: //localhost: 3306/db4
  2. JDBC URl 详细说明

    1
    jdbc:mysql://localhost:3306/demo?characterEncoding=UTF-8
  • JDBC 规定 ur 的格式由三部分组成,每个部分中间使用冒号分隔。
    • 第一部分是协议 jdbc < 这是固定的;
    • 第二部分是子协议,就是数据库名称,连接 mysq 数据库,第二部分当然是 mysql 了
    • 第三部分是由数据库厂商规定的,我们需要了解每个数据库厂商的要求,mysq 的第三部分分别 由数据库服务器的 IP 地址 (localhost)、端口号 (3306), 以及要使用的数据库名称组成。
  1. 获取连接 Connection 对象
1
2
3
// 获取连接 connection 连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo?characterEncoding=UTF-8","root","000");
System.out.println(connection);

获取语句执行对象 Statement

  • Statement: 代表一条语句对象,用于发送 SQL 语句给服务器,用于执行静态 SQL 句并返回它所生成结果的对象。

Statement 类常用方法

方法声明说明
executeUpdate(String sql)执行 insert update delete 语句返回 nt 类型代表受影响的行数
ResultSet executeQuery(String sql);执行 select 语句,返回 Resultset 结果集对象

代码示例

1
2
3
4
5
6
7
8
9
10
11
// 获取 statement 对象
statement = connection.createStatement();

// 通过 Statement 对象的 executeUpdate 方法创建一张表
String sql = "create table test(id int,name varchar(10),age int);";
// int count = statement.executeUpdate(sql); // 受影响行数 0
// System.out.println(count);

sql = "select * from test";
// 执行查询操作 ResultSet是结果集对象
ResultSet resultSet = statement.executeQuery(sql);

ResultSet 结果集对象

作用:封装数据库查询的结果对结果集进行遍历,取出每一条记录。

常用方法说明
boolean next()1) 游标向下一行
2) 返回 boolean 类型,如果还有下一条记录,返回 true, 否则返回 false
xxx getXxx( String or int)1) 通过列名,参数是 String 类型。返回不同的类型
2) 通过列号,参数是整数,从 1 开始。返回不同的类型
  • 处理结果集
    1
    2
    3
    4
    5
    6
    7
    String sql = "select * from test";
    // 执行查询操作 ResultSet是结果集对象
    resultSet = statement.executeQuery(sql);
    // resultSet.next() 获取下一条结果集
    while (resultSet.next()) {
    System.out.println(resultSet.getString("name"));
    }

预处理对象

PreparedStatement 接口介绍

  • PreparedStatement 是 Statement 接口的子接口,继承于父接口中所有的方法。它是一个预编译的 SQL 语句对象
  • 预编译:是指 SαL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次髙效地执行该语句。

    Preparedstatement 特点

  • 因为有预先编译的功能,提高 SQL 的执行效率。
  • 可以有效的防止 SQL 注入的问题,安全性更高

    获取 Preparedstatemen 对象

  • 通过 Connection 创建 PreparedStatemen 对象
    Connection 中的方法说明
    PreparedStatement prepare Statement(String sql)指定预编译的 SQL 语句,
    SQL 语句中使用占位符?创建一个语句对象

事物

  • 我们使用 Connection 中的方法实现事务管理
    方法说明
    void setAutoCommit(boolean autoCommit)参数是 true 或 fase 如果设置为 fase, 表示关闭自动提交,相当于开启事务
    void commit()提交事务
    void rollback()回滚事务