JDBC中数据库的增删改查操作

我会带着你远行 2023-07-10 14:10 42阅读 0赞

一、数据库编程一般过程

在这里插入图片描述
图为数据库编程的一般过程,其中查询(Read)过程最多需要7个步骤,修改(C插入、U 更新、D删除)过程最多需要5个步骤。这个过程采用了预编译语句对象进行数据操作,所以有可能进 行绑定参数。

在编程之前先交代一下config.properties文件:

  1. driver=com.mysql.cj.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/JAVA
  3. user=root
  4. password=199911
  5. useSSL=false
  6. verifyServerCertificate=false

准备好的数据库
在这里插入图片描述

二、数据查询操作

(1)有条件查询

代码如下:

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.sql.*;
  4. import java.util.Properties;
  5. /** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/3/2 * @time : 3:48 下午 */
  6. //不使用自动资源管理
  7. public class CRUDSample1 {
  8. // 连接数据库
  9. static String url;
  10. // 创建properties对象
  11. static Properties info = new Properties();
  12. // 1.驱动程序加载,放在静态代码块中,在静态代码块中读取属性文件内容到Properties对象和加载驱动程序,这两个操作只需执行一次
  13. static {
  14. // 获得属性文件输入流
  15. InputStream inputStream = CRUDSample1.class.getClassLoader().getResourceAsStream("config.properties");
  16. try {
  17. // 加载属性文件内容到Properties对象
  18. info.load(inputStream);
  19. // 从属性文件中读取URL
  20. url = info.getProperty("url");
  21. // 从属性文件中读取driver
  22. String driverClassname = info.getProperty("driver");
  23. // 驱动程序加载
  24. Class.forName(driverClassname);
  25. System.out.println("驱动程序加载成功");
  26. } catch (IOException e) {
  27. System.out.println("加载属性文件失败");
  28. e.printStackTrace();
  29. } catch (ClassNotFoundException e) {
  30. System.out.println("驱动程序加载失败");
  31. e.printStackTrace();
  32. }
  33. }
  34. //主函数
  35. public static void main(String[] args) {
  36. // 查询数据
  37. read();
  38. }
  39. // 数据查询操作
  40. public static void read(){
  41. Connection conn = null;
  42. PreparedStatement pstmt = null;
  43. ResultSet rs = null;
  44. try {
  45. // 2.创建数据库连接
  46. conn = DriverManager.getConnection(url,info);
  47. System.out.println("数据库连接成功");
  48. // 3.创建语句对象,返回PreparedStatement对象
  49. // 这里查询的是数据库中id大于2的人的姓名和年龄
  50. pstmt = conn.prepareStatement("select name,age from xinxi_tb where id > ? order by id");
  51. // 4.绑定参数
  52. /** * 绑定参数时需要注意两个问题:绑定参数顺序 和 绑定参数的类型 * 绑定参数索引是 从1开始的,而不是从0开始的。 * 根据绑定参数的类型不同选择对应的set方法。 */
  53. pstmt.setInt(1,3);
  54. // 5.执行查询
  55. rs = pstmt.executeQuery();
  56. // 6.遍历结果集
  57. while (rs.next()){
  58. /**注意点:列名对应的数据类型,rs.getX就对应什么,例如(name: %s,rs.getString("name"或者为 1 )) *rs.getX(可以设置为columnindex = (查找的列的索引,从1开始索引),或columnLabel = "列名") */
  59. System.out.printf("name: %s,age: %d\n",rs.getString(1),rs.getInt("age"));
  60. }
  61. } catch (SQLException e) {
  62. e.printStackTrace();
  63. // 7.释放资源,这里也可以选择自动资源管理
  64. }finally {
  65. if (rs != null){
  66. try {
  67. rs.close();
  68. } catch (SQLException e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. if (pstmt != null){
  73. try {
  74. pstmt.close();
  75. } catch (SQLException e) {
  76. e.printStackTrace();
  77. }
  78. }
  79. if (conn != null){
  80. try {
  81. conn.close();
  82. }catch (SQLException e) {
  83. e.printStackTrace();
  84. }
  85. }
  86. }
  87. }
  88. }

运行结果:

  1. 驱动程序加载成功
  2. 数据库连接成功
  3. name: 雷军,age: 43
  4. name: 马云,age: 56
  5. name: 马化腾,age: 49

(2)无条件查询

代码如下:

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.sql.*;
  4. import java.util.Properties;
  5. /** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/3/2 * @time : 6:01 下午 */
  6. //使用自动资源管理系统
  7. public class CRUDSample2 {
  8. // 连接数据库
  9. static String url;
  10. // 创建properties对象
  11. static Properties info = new Properties();
  12. // 1.驱动程序加载,放在静态代码块中,在静态代码块中读取属性文件内容到Properties对象和加载驱动程序,这两个操作只需执行一次
  13. static {
  14. // 获得属性文件输入流
  15. InputStream inputStream = CRUDSample2.class.getClassLoader().getResourceAsStream("config.properties");
  16. try {
  17. // 加载属性文件内容到Properties对象
  18. info.load(inputStream);
  19. // 从属性文件中读取URL
  20. url = info.getProperty("url");
  21. // 从属性文件中读取driver
  22. String driverClassname = info.getProperty("driver");
  23. // 驱动程序加载
  24. Class.forName(driverClassname);
  25. System.out.println("驱动程序加载成功");
  26. } catch (IOException e) {
  27. System.out.println("加载属性文件失败");
  28. e.printStackTrace();
  29. } catch (ClassNotFoundException e) {
  30. System.out.println("驱动程序加载失败");
  31. e.printStackTrace();
  32. }
  33. }
  34. //主函数
  35. public static void main(String[] args) {
  36. // 查询最大的用户id
  37. System.out.println(readMaxUserID());
  38. }
  39. // 查询最大的用户id
  40. public static int readMaxUserID(){
  41. int maxid = 0;
  42. try (
  43. // 2.创建数据库连接
  44. Connection conn = DriverManager.getConnection(url,info);
  45. // 3.创建语句对象
  46. PreparedStatement pstmt = conn.prepareStatement("select max(id) from xinxi_tb");
  47. // 4。执行查询
  48. ResultSet rs = pstmt.executeQuery()
  49. ){
  50. // 打印数据库连接信息
  51. System.out.println("数据库连接成功");
  52. // 5.遍历结果集
  53. if (rs.next()){
  54. maxid = rs.getInt(1);
  55. }
  56. } catch (SQLException e) {
  57. e.printStackTrace();
  58. }
  59. return maxid;
  60. }
  61. }

运行结果:

  1. 驱动程序加载成功
  2. 数据库连接成功
  3. 6

三、数据插入

代码如下:

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.SQLException;
  7. import java.util.Properties;
  8. /** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/3/2 * @time : 6:15 下午 */
  9. //使用自动资源管理系统
  10. public class CRUDSample3 {
  11. // 连接数据库
  12. static String url;
  13. // 创建properties对象
  14. static Properties info = new Properties();
  15. // 1.驱动程序加载,放在静态代码块中,在静态代码块中读取属性文件内容到Properties对象和加载驱动程序,这两个操作只需执行一次
  16. static {
  17. // 获得属性文件输入流
  18. InputStream inputStream = CRUDSample2.class.getClassLoader().getResourceAsStream("config.properties");
  19. try {
  20. // 加载属性文件内容到Properties对象
  21. info.load(inputStream);
  22. // 从属性文件中读取URL
  23. url = info.getProperty("url");
  24. // 从属性文件中读取driver
  25. String driverClassname = info.getProperty("driver");
  26. // 驱动程序加载
  27. Class.forName(driverClassname);
  28. System.out.println("驱动程序加载成功");
  29. } catch (IOException e) {
  30. System.out.println("加载属性文件失败");
  31. e.printStackTrace();
  32. } catch (ClassNotFoundException e) {
  33. System.out.println("驱动程序加载失败");
  34. e.printStackTrace();
  35. }
  36. }
  37. //主函数
  38. public static void main(String[] args) {
  39. // 数据插入操作
  40. create();
  41. }
  42. public static void create(){
  43. try (
  44. // 2.创建数据库连接
  45. Connection conn = DriverManager.getConnection(url,info);
  46. // 3.创建语句对象
  47. PreparedStatement pstmt = conn.prepareStatement("insert into xinxi_tb (id, name, age) values (?,?,?)");
  48. ){
  49. // 打印数据库连接信息
  50. System.out.println("数据库连接成功");
  51. // 4.绑定参数
  52. pstmt.setInt(1,6);
  53. pstmt.setString(2,"马化腾");
  54. pstmt.setInt(3,49);
  55. // 5.执行修改
  56. // 行executeUpdate()方法执行SQL语句,该 方法与查询方法executeQuery()不同。executeUpdate()方法返回的是整数,成功影响的记录数, 即成功插入记录数。
  57. int affectedRows = pstmt.executeUpdate();
  58. System.out.printf("成功插入%d条数据\n",affectedRows);
  59. } catch (SQLException e) {
  60. e.printStackTrace();
  61. }
  62. }
  63. }

这里要根据自己数据库的实际情况来修改代码,才能运行

四、数据更新

代码如下:

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.SQLException;
  7. import java.util.Properties;
  8. /** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/3/2 * @time : 6:40 下午 */
  9. //使用自动资源管理系统
  10. public class CRUDSample4 {
  11. // 连接数据库
  12. static String url;
  13. // 创建properties对象
  14. static Properties info = new Properties();
  15. // 1.驱动程序加载,放在静态代码块中,在静态代码块中读取属性文件内容到Properties对象和加载驱动程序,这两个操作只需执行一次
  16. static {
  17. // 获得属性文件输入流
  18. InputStream inputStream = CRUDSample4.class.getClassLoader().getResourceAsStream("config.properties");
  19. try {
  20. // 加载属性文件内容到Properties对象
  21. info.load(inputStream);
  22. // 从属性文件中读取URL
  23. url = info.getProperty("url");
  24. // 从属性文件中读取driver
  25. String driverClassname = info.getProperty("driver");
  26. // 驱动程序加载
  27. Class.forName(driverClassname);
  28. System.out.println("驱动程序加载成功");
  29. } catch (IOException e) {
  30. System.out.println("加载属性文件失败");
  31. e.printStackTrace();
  32. } catch (ClassNotFoundException e) {
  33. System.out.println("驱动程序加载失败");
  34. e.printStackTrace();
  35. }
  36. }
  37. //主函数
  38. public static void main(String[] args) {
  39. // 数据更新操作
  40. update();
  41. }
  42. public static void update(){
  43. try (
  44. // 2.创建数据库连接
  45. Connection conn = DriverManager.getConnection(url,info);
  46. // 3.创建语句对象
  47. PreparedStatement pstmt = conn.prepareStatement("update xinxi_tb set name = ? where id = ?");
  48. ){
  49. // 打印数据库连接信息
  50. System.out.println("数据库连接成功");
  51. // 4.绑定参数
  52. pstmt.setString(1,"雷军");
  53. pstmt.setInt(2,4);
  54. // 5.执行修改
  55. int affectedRows = pstmt.executeUpdate();
  56. System.out.printf("成功更新%d条数据\n",affectedRows);
  57. } catch (SQLException e) {
  58. e.printStackTrace();
  59. }
  60. }
  61. }

这里要根据自己数据库的实际情况来修改代码,才能运行

五、数据删除

代码如下:

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.SQLException;
  7. import java.util.Properties;
  8. /** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/3/2 * @time : 6:49 下午 */
  9. //使用自动资源管理系统
  10. public class CRUDSample5 {
  11. // 连接数据库
  12. static String url;
  13. // 创建properties对象
  14. static Properties info = new Properties();
  15. // 1.驱动程序加载,放在静态代码块中,在静态代码块中读取属性文件内容到Properties对象和加载驱动程序,这两个操作只需执行一次
  16. static {
  17. // 获得属性文件输入流
  18. InputStream inputStream = CRUDSample2.class.getClassLoader().getResourceAsStream("config.properties");
  19. try {
  20. // 加载属性文件内容到Properties对象
  21. info.load(inputStream);
  22. // 从属性文件中读取URL
  23. url = info.getProperty("url");
  24. // 从属性文件中读取driver
  25. String driverClassname = info.getProperty("driver");
  26. // 驱动程序加载
  27. Class.forName(driverClassname);
  28. System.out.println("驱动程序加载成功");
  29. } catch (IOException e) {
  30. System.out.println("加载属性文件失败");
  31. e.printStackTrace();
  32. } catch (ClassNotFoundException e) {
  33. System.out.println("驱动程序加载失败");
  34. e.printStackTrace();
  35. }
  36. }
  37. //主函数
  38. public static void main(String[] args) {
  39. // 数据删除操作
  40. delete();
  41. }
  42. public static void delete(){
  43. try (
  44. // 2.创建数据库连接
  45. Connection conn = DriverManager.getConnection(url,info);
  46. // 3.创建语句对象
  47. PreparedStatement pstmt = conn.prepareStatement("delete from xinxi_tb where id = ?");
  48. ){
  49. // 打印数据库连接信息
  50. System.out.println("数据库连接成功");
  51. // 4.绑定参数
  52. pstmt.setInt(1, 3);
  53. // 5.执行修改
  54. int affectedRows = pstmt.executeUpdate();
  55. System.out.printf("成功删除%d条数据\n",affectedRows);
  56. } catch (SQLException e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. }

这里要根据自己数据库的实际情况来修改代码,才能运行

总结:学好数据库编程还是需要掌握一些MySQL的基本语句,如果您想更多的了解MySQL常用命令,可以详见连接https://blog.csdn.net/weixin_45366499/article/details/104585167
相信它一定对您有帮助!

以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!

发表评论

表情:
评论列表 (有 0 条评论,42人围观)

还没有评论,来说两句吧...

相关阅读