小王同学先给大家简单的介绍下咱们的jdbc
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
API概述🎅🏼
JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中),主要包括(斜体代表接口,需驱动程序提供者来具体实现):
DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接(Connection)。Connection:数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。可以产生用以执行SQL的Statement。Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)。CallableStatement:用以调用数据库中的存储过程。SQLException:代表在数据库连接的建立和关闭和SQL语句的执行过程中发生了例外情况(即错误)。
数据类型的映射
建立连接🎅🏼
建立连接的五大步骤:
加载(注册)数据库
建立链接
执行SQL语句
处理结果集
关闭数据库
首先小王同学先去公共仓库去下载我们的jdbc driver jar包!~\
在搜索栏搜索mysql~
点第一个mysql connector
里面有各种各样的版本 小王同学的mysql是8版本系列的所以也要下载同样版本系列的驱动包~
点击下载jar包 下载解压完 👉🏼
右键ctrl c 复制 我们的jar包
然后打开我们的IDEA
创建一个jdbc的项目
创建一个lib文件夹 右键ctrl v
然后
Add as Library 就把我们的jar 包导入进去了!~
接下来就是最精彩的CRUD辣~
我们先在任务管理器创建一个学生表
接着在IDEA实现 往表里插入一行数据~
新增(create)🎅🏼
代码附上:
import com.mysql.cj.jdbc.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; public class JDBCInsert { public static void main(String[] args) throws SQLException { DataSource dataSource=new MysqlDataSource(); // 1. 创建数据源对象. 数据源对象就描述了要访问的数据库是啥, 在哪. ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/wxz_03?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("root"); // 2. 让代码和数据库服务器建立连接. Connection connection=dataSource.getConnection(); // [用户输入] 通过用户输入的数据, 来确定插入的值. Scanner sc=new Scanner(System.in); System.out.println("请输入要查找的学号: "); int id=sc.nextInt(); System.out.println("请输入要查找的姓名: "); String name=sc.next(); // 3. 构造要执行的 SQL 语句~~ [构造请求] String sql="insert into student values(?,?)"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, id); statement.setString(2, name); System.out.println("statement: " + statement); // 4. 执行 SQL [发送请求 & 读取响应] // 执行方法, 有两个 // executeUpdate 对应插入删除修改语句. 返回值表示这次 SQL 操作影响到的行数. // executeQuery 对应查询语句. 返回值则是返回的临时表数据. int n = statement.executeUpdate(); System.out.println("n = " + n); // 5. 完成之后, 就需要关闭释放相关资源. statement.close(); connection.close(); } }
插入成功 我们进入cmd 查看一下表里的数据吧~
成功辣~
接着是我们的查询
查询(select)🎅🏼
代码附上:
import com.mysql.cj.jdbc.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JDBCSelect { public static void main(String[] args) throws SQLException { // 1. 创建数据源 DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/wxz_03?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("root"); // 2. 建立连接 Connection connection = dataSource.getConnection(); // 3. 构造 SQL String sql = "select * from student where id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, 1); // 4. 执行 SQL // 查询语句要使用 executeQuery 来完成了. // 返回的结果是 ResultSet . 结果集. 里面是一个 "表" 这样的数据结构. // 一个表里有很多行, 每一行有很多列~~ ResultSet resultSet = statement.executeQuery(); // 5. 遍历结果集合 while (resultSet.next()) { // 每次循环, 就能够获取到 resultSet 中的一行. 进一步的就可以拿到每一列!! // getXXX 也是有一系列方法的. 会根据要取的数据的类型, 来灵活决策. int id = resultSet.getInt(1); String name = resultSet.getString(2); System.out.println("id = " + id + ", name =" + name); } // 6. 释放资源 resultSet.close(); statement.close(); connection.close(); } }
我们在控制台成功的查询到了前面插入的一条数据~
接着是更新数据
更新(update)🎅🏼
代码附上🎅🏼
import com.mysql.cj.jdbc.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; // 通过 JDBC 修改数据 public class JDBCUpdate { public static void main(String[] args) throws SQLException { // 1. 创建数据源 DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/wxz_03?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("root"); // 2. 建立连接 Connection connection = dataSource.getConnection(); // 3. 构造 SQL Scanner scanner = new Scanner(System.in); System.out.println("请输入要修改的同学学号: "); int id = scanner.nextInt(); System.out.println("请输入要修改的同学姓名: "); String name = scanner.next(); String sql = "update student set name = ? where id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1, name); statement.setInt(2, id); // 4. 执行 SQL int n = statement.executeUpdate(); System.out.println("n = " + n); // 5. 关闭释放资源 statement.close(); connection.close(); }
我们在控制台查询一下看看更新了没
果然更新了 我们的update 也成功了 接着是最后的一个delete环节~
删除(delete)🎅🏼
代码附上🎅🏼
import com.mysql.cj.jdbc.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; public class JDBCDelete { public static void main(String[] args) throws SQLException { // 1. 创建数据源 DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/wxz_03?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource) dataSource).setUser("root"); ((MysqlDataSource) dataSource).setPassword("root"); // 2. 和数据库建立连接 Connection connection = dataSource.getConnection(); // 3. 构造 SQL 语句 Scanner scanner = new Scanner(System.in); System.out.println("请输入要删除的学号: "); int id = scanner.nextInt(); String sql = "delete from student where id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, id); // 4. 执行 SQL int n = statement.executeUpdate(); System.out.println("n = " + n); // 5. 释放资源 statement.close(); connection.close(); } }
小王同学去控制台看看学号为1的同学删除了没有!
成功辣~~
以上就是小王同学带给大家的通过jdbc连接IDEA来实现 CRUD 是不是很方便呢