JDBC连接Mysql代码优化(IDEA Java EE项目)

怼烎@ 2023-07-12 09:28 209阅读 0赞

前期准备

创建一个IDEA Java EE项目

最初版本

加载驱动,未关闭Resultset, Statement, Connection

  1. package com.javaee.code;
  2. import java.sql.*;
  3. /**
  4. *TestJdbc
  5. */
  6. public class jdbcTest {
  7. public static String getMysql(){
  8. String url = "jdbc:mysql://127.0.0.1:3306/test_db1";//定义url
  9. // 驱动名字
  10. String driverName = "com.mysql.cj.jdbc.Driver";
  11. // 查询语句
  12. String sqlString = "SELECT * FROM employee limit 1";
  13. String result = null;
  14. try {
  15. // 1 加载驱动(3种方法?)
  16. Class.forName(driverName);
  17. // 2 创建连接
  18. Connection connection = DriverManager.getConnection(url,"root","123456");
  19. // 3 通过连接获取statement
  20. Statement statement = connection.createStatement();
  21. // 4 statement 做一些 增删改查
  22. ResultSet resultSet = statement.executeQuery(sqlString);
  23. // 5 获取执行结果
  24. while (resultSet.next()){
  25. System.out.println((resultSet.getString(4)));
  26. }
  27. } catch ( SQLException e) {
  28. //|ClassNotFoundException(方法1)
  29. e.printStackTrace();
  30. }
  31. return null;
  32. public static void main(String args){
  33. getMysql();
  34. }
  35. }

改进1:IDEA不用加载驱动

  1. DriverManager.setLogWriter(new PrintWriter(System.out));

打印DriverManager到控制台如下图在这里插入图片描述

改进二:在finally{}里关闭变量

  • 首先在把变量声明移到try{}外面
    在这里插入图片描述
  • 在finally中依次关闭resultset,statement,connection

    finally{

    1. if(null != resultSet){
    2. try{
    3. resultSet.close();
    4. } catch(SQLException e){
    5. e.printStackTrace();
    6. }
    7. }
    8. if(null != statement){
    9. try{
    10. statement.close();
    11. }catch (SQLException e){
    12. e.printStackTrace();
    13. }
    14. }
    15. if(null != connection){
    16. try{
    17. connection.close();
    18. }catch(SQLException e){
    19. e.printStackTrace();
    20. }
    21. }
    22. }
  • 运行后抛出异常javax.net.ssl.SSLException

MESSAGE: closing inbound before receiving peer’s close_notify

  • 解决:在usl后加上&useSSL=false

    String url = “jdbc:mysql://127.0.0.1:3306/school”;//定义url
    String allUrl = url + “?user=root&password=123456&useSSL=false”;

改进三:在try()里声明变量,建立连接

  1. package com.java.code.jdbc;
  2. import java.io.PrintWriter;
  3. import java.sql.*;
  4. /**
  5. *TestJdbc
  6. * @author Jingqi Wu
  7. * @date 2020/3/8
  8. */
  9. public class jdbcTestV3 {
  10. public static String getMysql(){
  11. String url = "jdbc:mysql://127.0.0.1:3306/school";//定义url
  12. String allUrl = url + "?user=root&password=123456";
  13. // 查询语句
  14. String sqlString = "SELECT * FROM s_student_homework";
  15. try (Connection connection = DriverManager.getConnection(allUrl)){
  16. // 3 通过连接获取statement
  17. try(Statement statement = connection.createStatement()){
  18. // 4 statement 做一些 增删改查
  19. try(ResultSet resultSet = statement.executeQuery(sqlString)){
  20. // 5 获取执行结果
  21. while (resultSet.next()){
  22. System.out.println((resultSet.getString(4)));
  23. }
  24. }
  25. }
  26. } catch ( SQLException e) {
  27. e.printStackTrace();
  28. }
  29. return null;
  30. }
  31. public static void main(String[] args){
  32. getMysql();
  33. }
  34. }

参考资料

  • idea中通过JDBC使用MySQL数据库与常见报错情况
  • https://github.com/wangkaimin/javaee-01

发表评论

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

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

相关阅读

    相关 IDEA 连接不上MySQL-JDBC

    IDEA使用MySQL-JDBC能更直观看到数据库数据,非常方便 但我本人在接触时间经常连接不上数据库,原因五花八门,秃头警告⚠。 ![在这里插入图片描述][wat