1、简介
1.1、背景
开发中,同一套Java代码是无法操作不同的关系型数据库,因为每一个关系型数据库的底层实现细节都不一样。如果这样,假如在业务开发阶段使用的是MySQL数据库,而上线时公司最终选用oracle数据库,则需要对代码进行大批量修改,这显然行不通。
因此Java开发人员更希望做到的是同一套Java代码操作不同的关系型数据库。sun公司就指定了一套标准接口(JDBC),JDBC中定义了所有操作关系型数据库的规则。
接口是无法直接使用的,我们需要使用接口的实现类,而这套实现类(称之为:驱动)就由各自的数据库厂商给出。
简单来说:在开发中我们使用的是java语言,那么势必要通过java语言操作数据库中的数据,势必要用Java操作不同的数据库管理系统,所以需要JDBC!
1.2、概念
JDBC(Java Database Connectivity)是Java程序用于访问关系数据库的API。通过标准的接口和类来管理数据库连接和执行SQL语句,可以用于连接不同类型的数据库管理系统(DBMS),如MySQL、Oracle、SQL Server等。这使得Java程序员可以快速、方便地与各种关系数据库进行交互。
1.3、驱动程序
JDBC驱动程序分为四种类型:
- JDBC-ODBC桥驱动
- Native-API驱动(部分)
- Network-Protocol驱动(三层驱动)
- Thin驱动(纯Java驱动)
通过使用JDBC驱动程序,Java程序员可以方便地访问关系型数据库,而不必关心数据库的具体实现方式。
2、JDBC的优点
各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发,可随时替换底层数据库,访问数据库的Java代码基本不变 。
以后编写操作数据库的代码只需要面向JDBC(接口),操作哪个关系型数据库就需要导入该数据库的驱动包,如需要操作MySQL数据库,就需要在项目中导入MySQL数据库的驱动包。
3、使用步骤
3.1、操作流程
①编写Java代码
②Java代码将SQL发送到MySQL服务端
③MySQL服务端接收到SQL语句并执行该SQL语句
④将SQL语句执行的结果返回给Java代码
3.2、代码步骤
①创建工程,导入驱动jar包
②注册驱动->Class.forName("com.mysql.jdbc.Driver");
③获取连接->Connection connection = DriverManager.getConnection(url, username, password);
Java代码需要发送SQL给MySQL服务端,就需要先建立连接
(如果是连接本地root数据库,要记得开启本地的MySQL服务)
(在后面的技术中,主要使用的是连接池的方式获取Connection连接)
④定义SQL语句->String sql = "update…" ;
⑤获取执行SQL对象(执行SQL语句需要SQL执行对象,而这个执行对象就是Statement对象) ->
->Statement statement = connection.createStatement();
⑥执行SQL->statement.executeUpdate(sql);
ResultSet resultSet = statement.executeQuery(sql);
⑦处理返回结果 while (resultSet.next()) {...}
⑧释放资源connection.close();
3.3、实例演示
3.3.1、创建空工程
3.3.2、指定项目的名称以及存放路径
3.3.3、设置项目的JDK版本和编译版本
编译版本一般默认即可
3.3.4、创建模块
3.3.5、⭐导入MySQL驱动包
将mysql的驱动包放在模块下的lib目录(随意命名,但是一般命名为lib或library)下,
并将该jar包添加为库文件
添加到项目依赖中,MySQL驱动jar包才能使用。
3.3.5.1、判断
如何判断添加是否成功:
①未添加:
②已添加成功
添加依赖成功后,jar包可以下拉看见其中的各种代码
3.3.6、⭐创建Java类
url : 连接路径
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2…
示例:jdbc:mysql://127.0.0.1:3306/db1
如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名称?参数键值对
1. package com.xzl; 2. 3. import java.sql.Connection; 4. import java.sql.DriverManager; 5. import java.sql.Statement; 6. 7. public class jdbc { 8. public static void main(String[] args) throws Exception { 9. //1、注册驱动 10. Class.forName("com.mysql.jdbc.Driver"); 11. //2、获取连接 12. String url = "jdbc:mysql://127.0.0.1:3306/student"; 13. String username = "root"; 14. String password_P = ""; 15. Connection connection = DriverManager.getConnection(url,username,password); 16. //3、定义sql 17. String sql = "insert into stu(name,math,gender) values('张三',85,'男')"; 18. //4. 获取执行sql的对象Statement 19. Statement statement = connection.createStatement(); 20. //5、执行SQL 21. int count = statement.executeUpdate(sql); 22. //6、处理结果(此处demo展现受影响的函数) 23. System.out.println(count); 24. //7、释放资源 25. statement.close(); 26. connection.close(); 27. } 28. }
结果:
在执行Java代码前:
执行Java代码后: