【MySQL探索之旅】JDBC (Java连接MySQL数据库)

avatar
作者
猴君
阅读量:3

封面

📚博客主页:爱敲代码的小杨.

✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》

❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!


小杨近些在学习人工智能方面的知识,发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

文章目录

1. JDBC 的概念

1.1 JDBC 的概念

JDBC : 就是使用 Java 语言操作关系型数据库的一套 API
JDBC 全称:( Java DataBase Connectivity ) Java 数据库连接
image-20210725130537815.png
我们开发的同一套Java代码是无法操作不同的关系型数据库,因为每一个关系型数据库的底层实现细节都不一样。如果这样,问题就很大了,在公司中可以在开发阶段使用的是MySQL数据库,而上线时公司最终选用oracle数据库,我们就需要对代码进行大批量修改,这显然并不是我们想看到的。我们要做到的是同一套Java代码操作不同的关系型数据库,而此时sun公司就指定了一套标准接口(JDBC),JDBC中定义了所有操作关系型数据库的规则。众所周知接口是无法直接使用的,我们需要使用接口的实现类,而这套实现类(称之为:驱动)就由各自的数据库厂商给出。

1.2 JDBC 的本质

  • 官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口
  • 各个数据库厂商去实现这套接口,提供数据库驱动 jar
  • 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动 jar 包中的实现类

1.3 JDBC 的好处

  • 各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发
  • 可随时替换底层数据库,访问数据库的Java代码基本不变

以后编写操作数据库的代码只需要面向JDBC(接口),操作哪儿个关系型数据库就需要导入该数据库的驱动包,如需要操作MySQL数据库,就需要再项目中导入MySQL数据库的驱动包。(关注文末的公众号回复:MySQL即可获取驱动包)
image.png

2. JDBC 的使用

Java 操作数据库的流程
image.png

2.1 编写代码的步骤

  1. 创建工程, 导入驱动 jar

image.png
添加库
image.png
image.png

  1. 创建数据源(DataSource)
// 1. 创建数据源(DataSource) DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/你的数据名?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource) dataSource).setUser("你的用户名"); ((MysqlDataSource) dataSource).setPassword("你的密码"); 
  1. 连接数据库服务器
// 2. 连接数据库服务器 Connection connection = dataSource.getConnection(); 
  1. 构造操作数据库的 SQL 语句
System.out.println("请输入id"); int id = input.nextInt(); System.out.println("请输入姓名"); String name = input.next();; String sql = "insert into 你的表名 values (?,?)"; // sql语句 PreparedStatement preparedStatement = connection.prepareStatement(sql);  // 构造 "语句对象" preparedStatement.setInt(1, id); preparedStatement.setString(2, name); 
  1. 执行 SQL 语句
int n = preparedStatement.executeUpdate(); System.out.println("n = " + n); 
  1. 释放资源
preparedStatement.close(); connection.close(); 

案例

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;  import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner;  public class JDBCDemo {     public static void main(String[] args) throws SQLException {         Scanner input = new Scanner(System.in);          // 1. 创建数据源(DataSource)         DataSource dataSource = new MysqlDataSource();         ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java111?characterEncoding=utf8&useSSL=false");         ((MysqlDataSource) dataSource).setUser("root");         ((MysqlDataSource) dataSource).setPassword("1234");          // 2. 连接数据库服务器         Connection connection = dataSource.getConnection();          // 3. 构造操作数据库的 SQL 语句         System.out.println("请输入id");         int id = input.nextInt();         System.out.println("请输入姓名");         String name = input.next();;         String sql = "insert into test values (?,?)";         PreparedStatement preparedStatement = connection.prepareStatement(sql);  // 构造 "语句对象"         preparedStatement.setInt(1, id);         preparedStatement.setString(2, name);          // 4. 执行 SQL语句         int n = preparedStatement.executeUpdate();         System.out.println("n = " + n);          // 5. 释放资源         preparedStatement.close();         connection.close();     } }  

运行结果:
image.png
image.png

3. JDBC 常用类和接口

3.1 JDBC API

在Java JDBC编程中对数据库的操作均使用JDK自带的API统一处理,通常与特定数据库的驱动类是完全解耦的。所以掌握 Java JDBC API (位于 java.sql 包下) 即可掌握 Java 数据库编程。

3.2 Connection

Connection接口实现类由数据库提供,获取 Connection对象通常有两种方式:

  1. 一种是通过 DriverManager(驱动管理类)的静态方法获取:
// 加载 JDBC 驱动程序 Class.forName("com.mysql.jdbc.Driver");  // 创建数据库连接 Connection connection = DriverManager.getConnection(url); 
  1. 一种是通过 DataSource(数据源)对象获取。实际应用中会使用 DataSource对象。
DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java111?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource) dataSource).setUser("root"); ((MysqlDataSource) dataSource).setPassword("1234"); 

区别:

  1. DriverManager类来获取的 Connection 连接,是无法重复利用的,每次使用完以后释放资源时,通过 connection.close()都是关闭物理连接。
  2. DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接是可以复用的,每次使用完数据库连接,释放资源调用 connection.close()都是将 Conncetion连接对象回收。

3.3 Statement

Statement对象主要是将SQL语句发送到数据库中。JDBC API中主要提供了三种Statement对象。
image.png
实际开发中最常用的是 PreparedStatement对象
总结:
image.png
主要掌握两种执行 SQL 的方法:

  1. executeQuery() 方法执行后返回单个结果集的,通常用于 select语句
  2. executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于updateinsertdelete语句

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!