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

前期准备

创建一个IDEA Java EE项目

最初版本

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

package com.javaee.code;

import java.sql.*;

/**
 *TestJdbc
 */
public class jdbcTest {

    public static String getMysql(){
        String url = "jdbc:mysql://127.0.0.1:3306/test_db1";//定义url
        // 驱动名字
        String driverName = "com.mysql.cj.jdbc.Driver";

        // 查询语句
        String sqlString = "SELECT * FROM employee limit 1";

        String result = null;

        try {
            // 1 加载驱动(3种方法?)
            Class.forName(driverName);

            // 2 创建连接
            Connection connection = DriverManager.getConnection(url,"root","123456");

            // 3 通过连接获取statement
            Statement  statement = connection.createStatement();

            // 4 statement 做一些 增删改查
            ResultSet resultSet = statement.executeQuery(sqlString);

            // 5 获取执行结果
            while (resultSet.next()){
                System.out.println((resultSet.getString(4)));
            }

        } catch ( SQLException e) {//|ClassNotFoundException(方法1)
            e.printStackTrace();
        }
        return null;

    public  static void main(String args){
        getMysql();
    }
}

改进1:IDEA不用加载驱动

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

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

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

  • 首先在把变量声明移到try{}外面
    在这里插入图片描述
  • 在finally中依次关闭resultset,statement,connection
finally{
            if(null != resultSet){
                try{
                    resultSet.close();
                } catch(SQLException e){
                    e.printStackTrace();
                }
            }
            if(null != statement){
                try{
                    statement.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
            if(null != connection){
                try{
                    connection.close();
                }catch(SQLException e){
                    e.printStackTrace();
                }
            }
        }

  • 运行后抛出异常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()里声明变量,建立连接

package com.java.code.jdbc;

import java.io.PrintWriter;
import java.sql.*;

/**
 *TestJdbc
 * @author Jingqi Wu
 * @date 2020/3/8
 */
public class jdbcTestV3 {

    public static String getMysql(){
        String url = "jdbc:mysql://127.0.0.1:3306/school";//定义url

        String allUrl = url + "?user=root&password=123456";
     
        // 查询语句
        String sqlString = "SELECT * FROM s_student_homework";

        try (Connection connection = DriverManager.getConnection(allUrl)){
            // 3 通过连接获取statement
            try(Statement statement = connection.createStatement()){
                // 4 statement 做一些 增删改查
                try(ResultSet resultSet = statement.executeQuery(sqlString)){
                    // 5 获取执行结果
                    while (resultSet.next()){
                        System.out.println((resultSet.getString(4)));
                    }
                }
            }
        } catch ( SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    public  static void main(String[] args){
        getMysql();
    }

}

参考资料

发布了22 篇原创文章 · 获赞 7 · 访问量 749

猜你喜欢

转载自blog.csdn.net/qq_39753778/article/details/104730636