前言:本文用IDEA实现一个JDBC程序

1.导入mysql驱动

  1. 下载数据库驱动jar包
    链接: https://pan.baidu.com/s/1o9Yzl0qGyxN84MzBkMo3NA 提取码: rise
    可以去笔者的百度网盘链接中下载mysql5.1.7版本的驱动。若你使用的mysql是8.x版本的,可以去官网https://dev.mysql.com/downloads/connector/j/下载对应版本的驱动,但官网连接速度较慢,若连接不上可以到国内的软件园下载。
    进入官网后按如下步骤操作:
  2. dbeaver连接mysql 驱动jar包 导入导出 mysql的jdbc驱动jar包_java

  3. 单击下载按钮以后,跳转到如下界面:

dbeaver连接mysql 驱动jar包 导入导出 mysql的jdbc驱动jar包_bc_02


下载完成后得到一个压缩包,解压后:

dbeaver连接mysql 驱动jar包 导入导出 mysql的jdbc驱动jar包_java_03

  1. 把驱动装载进idea新建的java项目中
    先使用使用IDEA新建一个普通的java项目,然后再总目录下新建lib目录用来存放jar包依赖。

    把之前解压后的两个jar包中任意一个拖拽进入lib目录,并右键点击add as library

2.连接数据库

话不多说,先上测试代码:

public static void main(String[] args) throws ClassNotFoundException, SQLException {
    //1.加载驱动
    Class.forName("com.mysql.jdbc.Driver");
    //2.创建数据库连接
    String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false";
    String username = "root";
    String password = "18767028268";
    Connection connection = DriverManager.getConnection(url, username, password);
    //3.获取sql执行对象
    Statement statement = connection.createStatement();
    //4.sql语句书写
    String sql = "SELECT * FROM grade";
    //5.执行sql
    ResultSet resultSet = statement.executeQuery(sql);
    while (resultSet.next()){
        System.out.println("id:"+resultSet.getObject(1));
        System.out.println("student_no:"+resultSet.getObject(1));
        System.out.println("subject:"+resultSet.getObject(1));
        System.out.println("mark:"+resultSet.getObject(1));
    }
    //6.释放连接
    resultSet.close();
    statement.close();
    connection.close();
}

笔者使用的数据库:

dbeaver连接mysql 驱动jar包 导入导出 mysql的jdbc驱动jar包_mysql_04


在书写过程中需要注意的几个点:

  • url的格式为:jdbc:mysql://主机名:端口号/数据库名?参数1&参数2&参数3&……
  1. 其中参数useSSL必须存在,不然会报错。参数的值一般用true,但是在部分机器上使用true会报错。具体原因还未知,有空再研究下SSL连接;
  2. 主机名,端口号,数据库名都换成你自己的;
  3. useUnicode=true和characterEncoding=utf8是为了防止中文乱码
  • 数据库的账号和密码也需要换成你自己的
  • 完成操作以后需要关闭数据库连接,关闭的顺序是对象创建顺序的逆序。

3.代码优化

优化思路:不难发现,加载数据库驱动、创建数据库连接以及释放连接的代码操作都是死的。从代码维护的方便考虑,可以使用一个工具类将这些操作进行封装。
工具类代码如下:

public class jdbcUtils {

    String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false";
    String username = "root";
    String password = "18767028268";
    static {
        try {
            //加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //获取数据库连接
    public Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, username, password);
    }
	//释放连接
    public void release(Connection connection, Statement statement, ResultSet resultSet) throws SQLException {
        resultSet.close();
        statement.close();
        connection.close();
    }

}

工具类代码思路:使用静态代码块来实现优先加载数据库驱动

修改后业务逻辑代码如下:

public static void main(String[] args) throws SQLException {

        jdbcUtils ju = new jdbcUtils();
        Connection connection = ju.getConnection();
        //3.获取sql执行对象
        Statement statement = connection.createStatement();
        //4.sql语句书写
        String sql = "SELECT * FROM grade";
        //5.执行sql
        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()){
            System.out.println("id:"+resultSet.getObject(1));
            System.out.println("student_no:"+resultSet.getObject(1));
            System.out.println("subject:"+resultSet.getObject(1));
            System.out.println("mark:"+resultSet.getObject(1));
        }
        ju.release(connection,statement,resultSet);
    }