目录

前言

二、JDBC程序编写步骤

1.总流程图如下

2.五种连接方式

2.1、数据库连接方式一

2.2、数据库连接方式二

2.3、数据库连接方式三

2.4、数据库连接方式四

2.5、数据库连接方式五

总结



前言

        JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

不同版本驱动连接不同版本数据库       

  • 5.1.7版本的驱动可以连接MySQL 5.7与MySQL 8.0

        5.1.37版本驱动只能连接MySQL 5.7
        连接url为url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
        驱动名称为driverClass=com.mysql.jdbc.Driver

  • 8.0.11版本的驱动可以连接MySQL 5.7与MySQL 8.0

jdbc:mysql://localhost:3306/test?                         characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true,必须加上时区参数serverTimezone
        驱动名称为driverClass=com.mysql.cj.jdbc.Driver

本文所用数据库版本为Mysql5.7版本


一、JDBC是什么?


        1.1、JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的 SQL 数据库存取和操作的公共接 (一组 API ),定义了用来访问数据库的标准 Java 类库,( java.sql,javax.sql )使用这些类库可以以一种 的方法、方便地访问数据库资源。


        通俗来讲, jdbc就是一堆接口,jdbc驱动就是这堆接口的实现类。


        1.2、 JDBC 的目标是使 Java 程序员使用 JDBC 可以连接任何 提供了 JDBC 驱动程序 的数据库系统,这样就使得程序员无需 对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。


        1.3、如果没有JDBC我们开发过程是这样的:


        


mysql8的连接驱动怎么写_数据库


        1.4、有了JDBC我们访问数据库是这样的:



mysql8的连接驱动怎么写_前端_02


二、JDBC程序编写步骤

1.总流程图如下

mysql8的连接驱动怎么写_数据库_03

ODBC(Open Database Connectivity,开放式数据库连接),是微软在Windows平台下推出的。使用者在程序中只需要调用ODBC API,由 ODBC 驱动程序将调用转换成为对特定的数据库的调用请求。

        (2)创建Connection对象就是获取数据库连接。

        (3)Statement对象执行sql语句。

        (4)Resultset对象相当于执行完语句以后的结果集。

2.五种连接方式

2.1、数据库连接方式一

@Test
public void testConnection1() {
    try {
        //1.提供java.sql.Driver接口实现类的对象 
        Driver driver = null; 
        driver = new com.mysql.jdbc.Driver(); 

        //2.提供url,指明具体操作的数据 
        String url = "jdbc:mysql://localhost:3306/test"; 

        //3.提供Properties的对象,指明用户名和密码 
        Properties info = new Properties(); 
        info.setProperty("user", "root"); 
        info.setProperty("password", "abc123"); 

        //4.调用driver的connect(),获取连接 
        Connection conn = driver.connect(url, info);
        System.out.println(conn);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

说明:上述代码中显示出现了第三方数据库的API。

2.2、数据库连接方式二

@Test
public void testConnection2() {
    try {
        //1.实例化Driver
        String className = "com.mysql.jdbc.Driver";
        Class clazz = Class.forName(className); 
        Driver driver = (Driver) clazz.newInstance();

        //2.提供url,指明具体操作的数据 
        String url = "jdbc:mysql://localhost:3306/test";

        //3.提供Properties的对象,指明用户名和密码 
        Properties info = new Properties(); 
        info.setProperty("user", "root"); 
        info.setProperty("password", "abc123");

        //4.调用driver的connect(),获取连接 
        Connection conn = driver.connect(url, info); 
        System.out.println(conn);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

说明:相较于方式一,这里使用反射实例化Driver,不在代码中体现第三方数据库的API。体现了面向接口编程思想。

2.3、数据库连接方式三

@Test 
public void testConnection3() { 
    try {
        //1.数据库连接的4个基本要素: 
        String url = "jdbc:mysql://localhost:3306/test"; 
        String user = "root"; 
        String password = "abc123"; 
        String driverName = "com.mysql.jdbc.Driver";

        //2.实例化Driver 
        Class clazz = Class.forName(driverName); 
        Driver driver = (Driver) clazz.newInstance();

        //3.注册驱动 
        DriverManager.registerDriver(driver);    

        //4.获取连接 
        Connection conn = DriverManager.getConnection(url, user, password);                         
        System.out.println(conn);
    } catch (Exception e) {
        e.printStackTrace();
    }

}


说明:使用 DriverManager 实现数据库的连接。体会获取连接必要的 4 个基本要素。


2.4、数据库连接方式四

@Test 
    public void testConnection4() { 
        try {
            //1.数据库连接的4个基本要素: 
            String url = "jdbc:mysql://localhost:3306/test"; 
            String user = "root"; 
            String password = "abc123"; 
            String driverName = "com.mysql.jdbc.Driver"; 

            //2.加载驱动 (①实例化Driver ②注册驱动) 
            Class.forName(driverName); 

            //Driver driver = (Driver) clazz.newInstance(); 
            //3.注册驱动 
            //DriverManager.registerDriver(driver); 
            /*
            可以注释掉上述代码的原因,是因为在mysql的Driver类中声明有: 
            static { 
                try {
                    DriverManager.registerDriver(new Driver()); 
                } catch (SQLException var1) { 
                    throw new RuntimeException("Can't register driver!"); 
                } 
            }
            
            */ 

            //3.获取连接 
            Connection conn = DriverManager.getConnection(url, user, password);                         
            System.out.println(conn); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    }


说明:不必显式的注册驱动了。因为在 DriverManager 的源码中已经存在静态代码块,实现了驱动的注册。


2.5、数据库连接方式五

@Test 
    public void testConnection5() throws Exception { 
        //1.加载配置文件 
        InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties"); 
        Properties pros = new Properties(); 
        pros.load(is); 
        
        //2.读取配置信息 
        String user = pros.getProperty("user"); 
        String password = pros.getProperty("password"); 
        String url = pros.getProperty("url"); 
        String driverClass = pros.getProperty("driverClass"); 

        //3.加载驱动
        Class.forName(driverClass); 

        //4.获取连接 
        Connection conn = DriverManager.getConnection(url,user,password);                 
        System.out.println(conn); 

    }

其中,配置文件声明在工程的src目录下 [jdbc.properties]

user=root 
password=abc123 
url=jdbc:mysql://localhost:3306/test 
driverClass=com.mysql.jdbc.Driver


说明:使用配置文件的方式保存配置信息,在代码中加载配置文件


 使用配置文件的好处:


         ①实现了代码和数据的分离,如果需要修改配置信息,直接在配置文件中修改,不需要深入代码(解耦)。


        ②如果修改了配置信息,省去重新编译的过程。



总结

这里对文章进行总结:本博客是对最近看的一下JDBC的一些课程进行的总结也算是复习。

如有不正确的地方还请指正。