在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 数据库编程的基础条件如果你想实现代码操作数据库,那么以下条件是你实现它的前提 编程语言: 例如 Java、C++、Python 等等,这些语言都能够实现操作数据库 某个数据库的操作: 例如我在前面章节就介绍了关于 MySQL 的操作,实现其它数据库如 Oracle、SQL Server 等等也要学会对应数据库的一些操作 安装数据库驱动包: 不同的数据库对应不同的编程语言提供了不同的数据库驱动包,这些驱动包内实现了操作对应数据库的 API 2. Java 的数据库编程:JDBC由于不同数据库的厂商实现数据库的 API 其实是不太一样的,因此很多语言就把这些数据库的 API 进行再一次的封装,封装出了一套统一的 API。这样就可以通过一套代码来操作多个不同的数据库了 在 Java 中,这样的封装就是由 Java 标准库来完成的,封装出了一套统一的数据库 API 称为 JDBC 拓展: Java 本身是跨平台语言,虽然不同操作系统提供了不同的 API,但是 Java 本身也把这些 API 封装了起来,在标准库中提供了统一的接口,因此 Java 就可以一次编译,到处运行 JDBC 介绍:
3. JDBC 访问数据库的层次结构4. MySQL 数据库操作介绍在前面章节我就介绍了关于 MySQL 的一些知识了,如果你在这方面有漏洞的话,可以直接通过下面的文章来进行补充。 第一章链接: 【MySQL 数据库】数据库的基础知识 第二章链接: 【MySQL 数据库】MySQL 的对库的操作及其数据类型 第三章链接: 【MySQL 数据库】数据表的基本操作 第四章链接: 【MySQL 数据库】数据库的约束及数据表的设计原理 第五章链接: 【MySQL 数据库】聚合查询和联合查询操作 第六章链接: 【MySQL 数据库】MySQL 的索引和事务 5. MySQL 驱动包的下载及添加到项目由于 MySQL 的 JDBC 驱动不是系统自带的,因此需要额外进行下载安装 各大数据库的官网就有对应数据库的 JDBC 驱动,但这里我推荐使用一些中央仓库来进行下载,例如 mvnrepository
6. JDBC 使用步骤6.1 创建数据库源,连接 Connection创建一个数据库源: DataSource dataSource=new MysqlDataSource(); // DataSource 是来自于 Java 标准库的一个接口,它用来表示“数据库在哪” // MysqlDataSource 是来自于 MySQL 的驱动包,它是实现了 DataSource 接口的类 数据库就是一个服务器程序,可以通过 把数据库的位置信息,设置到 // 1)通过一个 URL 来表示连接的数据库、数据库的 ip、端口、数据库名、编码方式、是否加密 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&setSSL=false"); // 2)设置登录数据库的用户名 ((MysqlDataSource)dataSource).setUser("root"); // 3)设置登录数据库的密码 ((MysqlDataSource)dataSource).setPassword("1234"); 由于
连接数据库,进行真正的网络通信: Connection connection=dataSource.getConnection();
6.2 构造 SQL 语句,为执行的操作做准备通过字符串,构造一个要执行的 sql // 例如要执行新增元素操作(表名为 student,有两列 id 和 student Scanner scanner=new Scanner(System.in); System.out.print("请输入 id:"); int id=scanner.nextInt(); System.out.print("请输入 姓名:"); String name=scanner.next(); String sql="insert into student values(?,?)";
例如:
PreparedStatement statement=connection.prepareStatement(sql); // 通过 setInt 方法,将 SQL 语句中的第一处通配符进行具体值的替换 statement.setInt(1,id); // 通过 setString 方法,将 SQL 语句中的第二处通配符进行具体值的替换 statement.setString(2,name); JDBC 中,使用 Connection 和数据库建立了连接对象 6.3 执行 SQL,并处理结果集通过 如果是执行内容变更的操作(增加、修改、删除),就使用 int executeUpdate() 方法 int ret=statement.executeUpdate(); // executeUpdate 的返回结果是执行该操作后影响的行数 // 可以通过打印返回值来显示影响的行数 System.out.println("ret: "+ret); 如果要是要执行查询操作,就使用 ResultSet executeQuery() 方法 ResultSet resultSet=statement.executeQuery(); // executeQuery 的返回结果是执行该操作后查询到的类似于临时表的结构,存放在 ResultSet 对象中 // 接下来我们可以对它进行遍历,类似于迭代器的遍历,方法如下 while(resultSet.next()){ // 假设有两列 id 和 name int id=resultSet.getInt(id); String name=resultSet.getString(name); System.out.println("id="+id+", name="+name); } SQL 查询语句对数据库的查询操作将返回一个 6.4 释放资源当我们执行完了我们的 SQL 语句后,如果不再使用某些对象,就需要把连接关闭,释放掉对应的资源 // 如果有 ResultSet 对象不需要使用后,需要关闭这个连接 resultSet.close(); // Connection 不需要使用后,需要关闭这个连接 connection.close(); // PreparedStatement 不需要使用后,需要关闭这个连接 statement.close();
6.5 JDBC 编程模板通过上面五步,就可以进行基础的 Java 的 JDBC 编程了,虽然方法不止这一种,但如果你还不会的话,掌握这个方法就行了。最后再总结下整个的模板,依据它,我们就可以用 Java 语言对 MySQL 数据库进行各种操作 public static void test(){ // 1. 创建数据库源,连接 Connection DataSource dataSource=new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); Connection connection=dataSource.getConnection(); // 2. 构造一个 SQL 语句,为要进行的操作做准备 String sql=""; PreparedStatement statement=connection.prepareStatement(sql); // 3. 执行 SQL,并处理结果集 int ret=statement.executeUpdate(); // 4. 执行完成,释放资源 statement.close(); connection.close(); } 7. JDBC 常用接口和类上述 JDBC 编程步骤中已经将以下接口和类介绍了很多,所以可以互相补充漏洞 7.1 DataSource 和 MysqlDataSource补充: 上述代码也可以直接使用 7.2 Connection
方式一: 通过 DataSource(数据源)对象获取 // 创建一个数据库源 DataSource dataSource=new MysqlDataSource(); // 设置数据库具体信息 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); // 创建数据库连接 Connection connection=dataSource.getConnection(); 方式二: 通过 // 加载 JDBC 驱动程序 Class.forName("com.mysql.cj.jdbc.Driver"); // 创建数据库连接 Connection connection=DriverManager.getConnection(url); MySQL 数据库驱动程序被封装在 上述两种方式的区别:
7.3 PreparedStatement
7.4 ResultSet
常见 ResultSet 对象方法:
8. Java 操作数据库实例8.1 往表中新增数据在 student 表中新增学生 id 和 name: public static void testInsert() throws SQLException { DataSource dataSource=new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); Connection connection=dataSource.getConnection(); Scanner scanner=new Scanner(System.in); System.out.print("请输入id:"); int id=scanner.nextInt(); System.out.print("请输入姓名:"); String name=scanner.next(); String sql="insert into student values(?,?)"; PreparedStatement statement=connection.prepareStatement(sql); statement.setInt(1,id); statement.setString(2,name); int ret=statement.executeUpdate(); System.out.println("ret: "+ret); statement.close(); connection.close(); } 8.2 删除表中的数据在表名为 student 的表中,删除学生表中符合 id 条件的记录: public static void testDelete() throws SQLException { DataSource dataSource=new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); Connection connection=dataSource.getConnection(); Scanner scanner=new Scanner(System.in); System.out.print("请输入要删除的 id:"); int id=scanner.nextInt(); String sql="delete from student where id=?"; PreparedStatement statement=connection.prepareStatement(sql); statement.setInt(1,id); int ret=statement.executeUpdate(); System.out.println("ret: "+ret); statement.close(); connection.close(); } 8.3 修改表中的数据在表名为 student 的表中,将符合 id 条件的学生姓名进行修改: public static void testUpdate() throws SQLException { DataSource dataSource=new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); Connection connection=dataSource.getConnection(); Scanner scanner=new Scanner(System.in); System.out.print("情输入你要更改的学生 id:"); int id=scanner.nextInt(); System.out.print("请输入你要更改后的学生姓名:"); 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); int ret=statement.executeUpdate(); System.out.println("ret: "+ret); statement.close(); connection.close(); } 8.4 查找表中的数据查找表名为 student 的表中的所有数据: public static void testSelect() throws SQLException { DataSource dataSource=new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); Connection connection=dataSource.getConnection(); String sql="select * from student"; PreparedStatement statement=connection.prepareStatement(sql); ResultSet resultSet=statement.executeQuery(); while(resultSet.next()){ int id=resultSet.getInt("id"); String name=resultSet.getString("name"); System.out.println("id = "+id+", name = "+name); } resultSet.close(); statement.close(); connection.close(); } 到此这篇关于MySQL数据库 JDBC 编程(Java 连接 MySQL)的文章就介绍到这了,更多相关Java 连接 MySQL内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论