程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

java JDBC 增删改查及封装

发布于2021-06-12 13:19     阅读(723)     评论(0)     点赞(30)     收藏(0)


1、插入数据

  1. package com;
  2. import java.sql.*;
  3. public class lxc {
  4. public static void main(String[] args) {
  5. // /useUnicode表示允许使用自定义的Unicode, //characterEncoding是给定自定义的Unicode是什么,解决乱码或问号的问题
  6. String url = "jdbc:mysql://127.0.0.1:3306/java_pro?useUnicode=true&characterEncoding=utf8";
  7. String user = "root";
  8. String password = "lvxingchen@123";
  9. Connection conne = null;
  10. Statement sta = null;
  11. try {
  12. // 注册驱动
  13. Class.forName("com.mysql.jdbc.Driver");
  14. // 获取连接 - 连接mysql数据库
  15. try {
  16. conne = DriverManager.getConnection(url, user, password); // 获取连接对象
  17. sta = conne.createStatement();// createStatement 专门执行sql语句的
  18. String sql = "insert into user(name, age, address) values('吕星辰', 20, '烟台市')";
  19. // 专门执行DML语句的,返回的是影响数据库的数据条数
  20. int count = sta.executeUpdate(sql);
  21. System.out.println(count == 1 ? "插入成功" : "插入失败");
  22. } catch (SQLException throwables) {
  23. throwables.printStackTrace();
  24. } finally {
  25. // 在finally中释放资源,并且按顺序依次关闭
  26. try {
  27. if(sta != null) {
  28. sta.close();
  29. }
  30. } catch (SQLException throwables) {
  31. throwables.printStackTrace();
  32. }
  33. try {
  34. if(conne != null) {
  35. conne.close();
  36. }
  37. } catch (SQLException throwables) {
  38. throwables.printStackTrace();
  39. }
  40. }
  41. } catch (ClassNotFoundException e) {
  42. e.printStackTrace();
  43. }
  44. }
  45. }

2、抽离全局配置

上边我们可以把全局的变量抽离出来,放在properties文件中:

 项目目录
db.properties与com同级



db.properties

  1. url=jdbc:mysql://127.0.0.1:3306/java_pro?useUnicode=true&characterEncoding=utf8
  2. user=root
  3. password=lvxingchen@123
  4. driver=com.mysql.jdbc.Driver

在项目文件中引入通过ResourceBundle加载配置文件

  1. package com;
  2. import java.sql.*;
  3. import java.util.ResourceBundle;
  4. public class lxc {
  5. public static void main(String[] args) {
  6. ResourceBundle resourceBundle = ResourceBundle.getBundle("db");
  7. String driver = resourceBundle.getString("driver");
  8. String url = resourceBundle.getString("url");
  9. String user = resourceBundle.getString("user");
  10. String password = resourceBundle.getString("password");
  11. Connection conne = null;
  12. Statement sta = null;
  13. try {
  14. Class.forName(driver);
  15. try {
  16. conne = DriverManager.getConnection(url, user, password); // 获取连接对象
  17. sta = conne.createStatement();// createStatement 专门执行sql语句的
  18. String sql = "insert into user(name, age, address) values('吕星辰', 20, '烟台市')";
  19. int count = sta.executeUpdate(sql);
  20. System.out.println(count == 1 ? "插入成功" : "插入失败");
  21. } catch (SQLException throwables) {
  22. throwables.printStackTrace();
  23. } finally {
  24. try {
  25. sta.close();
  26. } catch (SQLException throwables) {
  27. throwables.printStackTrace();
  28. }
  29. try {
  30. conne.close();
  31. } catch (SQLException throwables) {
  32. throwables.printStackTrace();
  33. }
  34. }
  35. } catch (ClassNotFoundException e) {
  36. e.printStackTrace();
  37. }
  38. }
  39. }

3、java连接数据库封装(以mysql为例)

db.properties 配置文件

  1. // db.properties
  2. url=jdbc:mysql://127.0.0.1:3306/java_pro?useUnicode=true&characterEncoding=utf8
  3. user=root
  4. password=lvxingchen@123
  5. driver=com.mysql.jdbc.Driver

 封装JDBCutil.java文件,下边只是简单的封装,查询结果集直接拼接字符串打印的:

  1. package com;
  2. import java.sql.*;
  3. import java.util.Arrays;
  4. import java.util.ResourceBundle;
  5. /**
  6. * @步骤
  7. * (1)注册驱动
  8. * (2)获取连接
  9. * (3)获取数据库对象
  10. * (4)执行sql语句
  11. * (5)处理查询结果集
  12. * (6)释放资源
  13. * JDBC的sql语句不需要以分号结尾。
  14. */
  15. /**
  16. * @对外暴露的方法:
  17. * (2)public void getAll(String sql) 获取数据
  18. * (3)public void insertOrDelOrEdit(String sql) 插入、修改、删除数据
  19. */
  20. public class JDBCutil {
  21. private final static String url;
  22. private final static String user;
  23. private final static String password;
  24. public Connection driverManager = null; // 获取数据库连接对象
  25. private static JDBCutil jdbc;
  26. // 静态代码块注册驱动 - 在类加载的时候执行一次。
  27. static {
  28. ResourceBundle resourceBundle = ResourceBundle.getBundle("db");
  29. String driver = resourceBundle.getString("driver");
  30. url = resourceBundle.getString("url");
  31. user = resourceBundle.getString("user");
  32. password = resourceBundle.getString("password");
  33. try {
  34. Class.forName(driver); // 注册驱动
  35. jdbc = new JDBCutil();
  36. // jdbc.getConnection(); // 连接数据库,及获取数据库对象
  37. } catch (ClassNotFoundException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. // 子类会重写父类的main方法,所以父类main方法不会执行!
  42. // public static void main(String[] args) {
  43. // System.out.println("执行了+++++++++++++++++++++++");
  44. // new JDBCutil().getConnection(); // 连接数据库
  45. // }
  46. // 获取数据库连接对象
  47. private void getConnection() {
  48. try {
  49. jdbc.driverManager = DriverManager.getConnection(url, user, password);
  50. } catch (SQLException throwables) {
  51. throwables.printStackTrace();
  52. System.out.println("连接失败");
  53. }
  54. System.out.println("****************************连接成功************************");
  55. }
  56. // 查询
  57. public void getAll(String sql) {
  58. Statement statement = null;
  59. ResultSet resultSet = null;
  60. try {
  61. System.out.println("jdbc.driverManager:"+jdbc.driverManager);
  62. // 这地方在加一层判断,因为增删改查完之后,会关闭数据库连接
  63. if(jdbc.driverManager == null) {
  64. jdbc.getConnection();
  65. }
  66. statement = jdbc.driverManager.createStatement();
  67. // 专门执行查询语句 executeQuery()
  68. resultSet = statement.executeQuery(sql); // 返回的是一个查询结果集 - 结果集也需要关闭
  69. // 遍历查询结果集:
  70. // resultSet.next() 方法 - 让光标往下移动一行,如果走到的的这一行有数据,则返回true,
  71. // 则把这一行数据分贝取出来即可;继续往下移动下一行;依次循环,如果没数据next() 方法会返回false,停止循环
  72. boolean status = resultSet.next();
  73. int count = 0;
  74. System.out.println("***********************************************************");
  75. while(status) {
  76. count ++;
  77. // 取数据
  78. // .getString() 不管数据库里边的数据类型是什么,都以字符串形式返回!getTnt() 取出的是数字类型,别的类型,请查看文档 ··· ···
  79. // .getString(1): 通过下标取数据(注意下边从1开始);
  80. // .getString("name"): 通过列字段取数据;
  81. String name = resultSet.getString("name");
  82. int age = resultSet.getInt("age");
  83. String address = resultSet.getString("address");
  84. System.out.println("查询出的数据结果为:"+name+"-"+age+"-"+address);
  85. status = resultSet.next();
  86. }
  87. System.out.println("***********************一共"+count+"条数据!************************");
  88. } catch (SQLException throwables) {
  89. throwables.printStackTrace();
  90. }finally {
  91. if(resultSet != null) {
  92. try {
  93. resultSet.close(); // 关闭结果集
  94. } catch (SQLException throwables) {
  95. throwables.printStackTrace();
  96. }
  97. }
  98. if(statement != null) {
  99. try {
  100. statement.close();
  101. } catch (SQLException throwables) {
  102. throwables.printStackTrace();
  103. }
  104. }
  105. // 关闭数据库连接
  106. jdbc.close();
  107. }
  108. }
  109. // 插入、删除、修改 - sql语句执行,暂时无返回数据
  110. public void insertOrDelOrEdit(String sql) {
  111. Statement statement = null;
  112. try {
  113. // 这地方在加一层判断,因为增删改查完之后,会关闭数据库连接
  114. if(jdbc.driverManager == null) {
  115. jdbc.getConnection();
  116. }
  117. statement = jdbc.driverManager.createStatement(); //createStatement 专门执行sql语句的
  118. int count = statement.executeUpdate(sql);
  119. System.out.println(count == 1 ? "成功" : "失败");
  120. } catch (SQLException throwables) {
  121. throwables.printStackTrace();
  122. }finally {
  123. if(statement != null) {
  124. try {
  125. statement.close();
  126. } catch (SQLException throwables) {
  127. throwables.printStackTrace();
  128. }
  129. }
  130. // 关闭数据库连接
  131. jdbc.close();
  132. }
  133. }
  134. // 关闭数据库连接
  135. private void close() {
  136. try {
  137. if(jdbc.driverManager != null) {
  138. jdbc.driverManager.close();
  139. jdbc.driverManager = null;
  140. }
  141. } catch (SQLException throwables) {
  142. throwables.printStackTrace();
  143. }
  144. }
  145. }


 



所属网站分类: 技术文章 > 博客

作者:忽明忽灭

链接:http://www.javaheidong.com/blog/article/221906/e9835c9e55c0d2a01147/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)