【MySQL】JDBC编程

目录

1、什么是JDBC?

2、导入 jar 包

3、JDBC 的使用

4、总结


1、什么是JDBC?

实际开发中,SQL 是很少手动输入的,绝大多数的 SQL 都是通过代码,自动执行的,这个时候就需要让其他编程语言来操作数据库了。

而 MySQL 是一个客户端/服务器架构的语言,根据 MySQL 提供的 API 写个数据库客户端是非常容易的。

比如 Oracle,SQLServer,SQLite 等数据库都有 API。

但是不同的数据库所提供的 API 是不一样的,他们的开发团队各不相同,所以 API 那么多,对于程序猿的学习成本就越高,于是在 Java 的圈子里,就把这些 API 统一编程一套,指定成标准!就称为 JDBC。

目前 JDBC 这套 API 已经成了 Java 标准库的一部分,由于 Java 的影响力还是很大的,以自身作为标准,各种数据库厂商,都提供了能够适应 JDBC 相关的驱动包!

所以我们只需要掌握了 JDBC 这套 API,无论操作哪个数据库,操作的代码都是不变,基本相同的。

即 JDBC 最主要的就是屏蔽了不同数据库原生 API 之间的差异,而是使用 JDBC 这一套 API 接口来规范了所有数据库的编程操作。


2、导入 jar 包

在使用 JDBC 之前,需要先安装对应数据库的驱动包,比如博主用的是 MySQL 5.7,那么下载对应的驱动包就是 mysql-connector-java-5.1.47.jar,这个驱动包可以到博主主页去获取!也可也去 Oracle 官网去下载哦!

下载好对应的驱动包后,我们就把 jar 包导入到项目中:

首先创建一个存放 jar 包的目录, 随后把这个 jar 包拷贝进来:

接着右键新建的目录(包含 jar 包),选中对应的 Add as Libray... 将目录创建成依赖目录,直接单击 OK,此时 IDEA 就能解析出 jar 包里包含的内容了!


3、JDBC 的使用

JDBC 这里的 api 看起来蛮多的,但实际上都非常简单,都是固定套路!

● 描述数据库的位置和用户密码

// 创建数据源
DataSource dataSource = new MysqlDataSource();
// 描述了数据库服务器所在位置, 当前固定写法
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root"); // 设置登录账户名
((MysqlDataSource)dataSource).setPassword("211016"); // 设置登录密码

这样一段代码,就设置好了数据库服务器所在的地址,要操作的数据库用户和用户密码.

至于 setUrl 这里面的字符串含义,我们下面也来一一解析下:

  • "jdbc:mysql" :这个 url 是给 jdbc 中的 mysql 来使用的
  • "127.0.0.1" :服务器所在的 IP 地址,此处的 IP 是环回IP,表示主机自己
  • "3306" : 这个是端口号,mysql 安装时候配置的,默认是 3306
  • "demo" :要访问的数据库名
  • "characterEncoding" :描述了请求的字符编码方式,一般情况下都是 utf8
  • "useSSL = false" :关闭加密功能,这里不做展开介绍

上述的内容,在后续讲述网络知识的时候,还会见到,这里只是简单的了解即可。

JDBC 支持两种风格的代码,一种是 DataSource,一种是 DriverManager.

  • DataSource 相比于 DriverManager 内置了数据库连接池,可以重复利用连接(比如:线程池,字符串常量池....)
  • DriverManager 使用的时候,需要借助反射,数据不常规的编程手段,博主文章中采用的是 DataSource!

● 与数据库建立连接

上述的操作,只是描述了数据库服务器在哪里,并没有真正建立起连接来,下面我们进行连接操作,才是真正开始通过网络去与数据库服务器进行通信!

// 令当前客户端与描述的数据库服务器建立连接, 会抛出 SQLException 异常
Connection connection = dataSource.getConnection();

● 构造 sql 语句

String sql = "select id, name, sex from student";
PreparedStatement statement = connection.prepareStatement(sql);

通过 connection.prepareStatement 方法构造出一个对象,PreparedStatement 类型的,其实这个对象背后做了很多事情,比如会对 sql 语句进行一些预处理....

上述的写法是直接写死了,如果是查询操作还好,那如果是要执行新增操作呢?也是直接写死吗?

String sql = "insert into student values(4, '小丽', '女')";

更多的时候,插入的数据的动态的,那要怎么写呢?可以使用 PerparedStatement 来通过占位符替换的方式,从而实现动态 sql 的构造:

String sql = "insert into student values(?, ?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, id);
statement.setString(2, name);
statement.setString(3, sex);

这里每个 ? 的位置是通过1开始计算的,setInt(1, 4),就是将第一个 ? 位置的数据插入成 4,后面的以此类推。  

构造出指定的 sql 语句后,就可以通过 statement 这个引用来执行了

● 执行 sql 语句

ResultSet result = statement.executeQuery(); // 查询操作
// int ret = statement.executeUpdate(); -> 新增, 修改, 删除操作

excuteQuery 执行后,会返回一个结果集,如果是 executeUpdate 则返回这个操作影响到几行。

● 处理结果集

while (result.next()) {
    int id = result.getInt("id");
    String name = result.getString("name");
    String sex = result.getString("sex");
    System.out.printf("student : id = %d, name = %s, sex = %s\n", id, name, sex);
}

● 断开连接

result.close();
statement.close();
connection.close();

JDBC 使用步骤总结:

  1. 创建数据源并连接
  2. 创建 sql 语句
  3. 使用操作命令来执行 sql
  4. 处理结果
  5. 释放资源

JDBC 在实际工作中,可能并不会直接使用,上述的代码大家也能看到,写起来还是比较麻烦的,因此就有了一些库和框架,针对 JDBC 进行了进一步的封装,让我们使用起来更方便,比如后续会学习到的 Mybatis 这种... 


4、总结

其实 JDBC 并不难,就是几个固定的套路,如果要是应付考试,还是需要自己多建几个表利用 JDBC 使用一些复杂查询,多练习练习,如果是工作中,用 JDBC 就不多了,会使用更方便的框架,如果你是一个很有自己想法的同学,可以基于 JDBC 进行修改,搭建一套属于自己的框架出来...


MySQL 数据库基础(完) ❀

猜你喜欢

转载自blog.csdn.net/m0_61784621/article/details/128901474