Java---Jdbc(Java DataBase Connectivity)--Mysql数据库--JDBC获取数据库连接

一、获取数据库连接

获取数据库连接要有三个要素。分别为Driver接口,URL,用户名和密码

要素一:Driver接口

  • java.sql.Driver接口是由数据库厂家提供的,是所有的Jdbc驱动程序要去实现的接口。不同的数据库厂商提供了不同的实现。

  • Mysql数据库的Driver接口为:com.mysql.cj.jdbc.Driver

  • 在获取数据库连接之前要将每个数据库厂商提供jar包导入到要开始的项目中(以IDEA为例)

    1.在模块jdbc的src下建立lib包,该文件只用来存放jar包(如下图).

    2.将与数据库版本相对应的jar包复制在lib包下(如下图).

    3.导入数据库的jar,在驱动jar点击右键-->Add as Library-->在Level框中选择Module Library-->点击OK,如果在jar包前出现了一个箭头,则表示导入成功(如下图).


要素二:URL

  • JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。

  • 比如常见的URL:jdbc:mysql://localhost:3306/test

    jdbc为协议名,mysql为子协议,localhost为主机名(即为服务端的ip地址),3306为对应的数据库的端口号,test为要连接的数据库名.

要素三:用户名与密码

  • 用户名指的是数据库的user,密码指的是数据库的password

几种获取数据库连接的方式

  1. 方式一

    public void getConnection1() throws SQLException{
        //1.提供java.sql.Driver接口实现类对象
    	Driver driver = new com.mysql.cj.jdbc.Driver();
        //2.提供url,指明具体的操作
        String url = "jdbc:mysql://localhost:3306/test";
        //3.提供Properties对象,指明具体的用户名和密码
        Properties pro = new Properties();
        pro.setProperty("user" , "root");
        pro.setProperty("password" , "123456");
        
        //4.driver调用connect,获取连接
        Connection con = driver.connect(url , pro);
        
        System.out.println(con);
    }
    

    说明:输出的结果为:com.mysql.cj.jdbc.ConnectionImpl@448ff1a8,则表示数据库获取连接成功;但这种方式出现了第三方数据库的api

  2. 方式二:对方式一进行改进,不引入第三方数据库的api

    public void getConnection2() throws Exception{
    	//1.实例化Driver
        Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();
        //2.提供url,指明具体的操作
        String url = "jdbc:mysql://localhost:3306/test";
        //3.提供Properties对象,指明具体的用户名和密码
        Properties pro = new Properties();
        pro.setProperty("user" , "root");
        pro.setProperty("password" , "123456");
        
        //4.driver调用connect,获取连接
        Connection con = driver.connect(url , pro);
        
        System.out.println(con);
    }
    

    说明:输出的结果为:com.mysql.cj.jdbc.ConnectionImpl@448ff1a8,则表示数据库获取连接成功;该方式使用的反射实例化Driver

  3. 方式三

    public void getConnection3() throws Exception{
    	//1.实例化Driver
        Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();
        //2.提供连接所需要的基本信息
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "123456";
        //3.注册驱动
        DriverManager.registerDriver(driver);
        //4.获取连接
        Connection con = DriverManager.getConnection(url , user , password);
        
        System.out.println(con);
    }
    

    说明:输出的结果为:com.mysql.cj.jdbc.ConnectionImpl@448ff1a8,则表示数据库获取连接成功;该发生使用DriverManager实现数据库的连接

  4. 方式四

    public void getConnection4() throws Exception{
    	//1.提供连接所需要的基本信息
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "123456";
        //2.获取Driver实现类对象
        Class.forName("com.mysql.cj.jdbc.Driver");
        //3.获取连接
        Connection con = DriverManager.getConnection(url , user , password);
        
        System.out.println(con);
    }
    

    说明:输出的结果为:com.mysql.cj.jdbc.ConnectionImpl@448ff1a8,则表示数据库获取连接成功;方式四为对方式三的改进,将 Driver driver = (Driver) clazz.newInstance();DriverManager.registerDriver(driver);给删除了,原因是(如下):

    //Mysql的Driver类中有下面的代码块
    static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
    
  5. 方式五:使用配置文件来保存连接数据库时的基本信息(最常用的获取数据库连接的方式)

    使用配置文件的好处有:①实现了代码和数据的分离,如果需要修改配置信息,直接在配置文件中修改,不需要深入代码②如果修改了配置信息,省去重新编译的过程。

    ①.配置文件建立在src目录下jdbc.properties(如下图)

②.编写jdbc.properties配置文件

③.编写获取数据库连接的代码

public void getConnection5() throws Exception{
	//1.加载配置文件,JdbcConnection表示getConnection5()方法在JdbcConnection下
   InputStream is = 			           JdbcConnection.class.getClassLoader().getResourceAsStream("jdbc.properties");
    Properties pro = new Properties();
    pro.load(is);
    //2.读取配置信息
    String user = pro.getProperty("user");
    String password = pro.getProperty("password");
    String url = pro.getProperty("url");
    String driver = pro.getProperty("driverClass");
    //3.加载驱动
    Class.forName(driver);
    //4.获取连接
    Connection con = DriverManager.getConnection(url , user , password);
    
    System.out.println(con);
}

说明:输出的结果为:com.mysql.cj.jdbc.ConnectionImpl@448ff1a8,则表示数据库获取连接成功

posted @ 2020-05-29 22:47  Lyfzzz  阅读(48)  评论(0)    收藏  举报