9.23JavaWeb之JDBC获取数据库连接方式

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了9.23JavaWeb之JDBC获取数据库连接方式脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

9.23JavaWeb之JDBC获取数据库连接方式

JDBc程序的编写步骤

9.23JavaWeb之JDBC获取数据库连接方式

 

获取数据库连接

Driver接口实现类

特点:

  • 支持多数据库连接

  • java.SQL.Driver接口是所有JDBC驱动程序需要实现的接口

示例代码:

package JDBCConnectionNo1;import org.testng.annotations.Test;import java.sql.Connection;import java.sql.Driver;import java.sql.SQLException;import java.util.PRoPErties;/** * 数据库连接测试类1 * @since JDK 1.8 * @date 2021/09/23 * @author Lucifer */public class ConnectionTestNo1 {    @Test    public void testConnection1() throws SQLException {        //获取一个Connection对象--->使用Driver        //声明一个Driver        Driver driver = new com.MySQL.jdbc.Driver(); //实例化的时候用MySQL具体的Driver的实现类--->这是一个对象,这是一个实现类        //调用Driver的方法获取Connection对象        String url = "jdbc:mysql://localhost/xxxx"; //URL的格式        /*        jdbc主协议        mysql子协议--->针对什么数据库        ip地址        port端口号        数据库         */        Properties info = new Properties(); //properties本身就是键值对形式的,用于封装用户名和密码--->新建properties对象        info.setProperty("user", "www");        info.setProperty("password", "654321");        //调用connect方法获取Connection对象        Connection conn = driver.connect(url, info); //返回的是Connection接口的实现类的对象        System.out.println(conn);    }}

小结:

  • Driver

  • URL

  • properties

    • user

    • password

按照步骤依次获取

为了增强可抑制性,代码中不应出现第三方的API

示例代码:

    //第二个连接数据库的方式,对方式一的迭代    /*    1、面向接口编程的,代码当中尽可能的不要出现任何第三方相关的API    2、在上一个方式当中看到了com.mysql.jdbc.Driver这个第三方的API,所以要换一种实现方式    3、使用反射的方式获取第三方的API--->动态获取第三方的驱动    使下面的程序中不出现第三方API,让程序有更好的移植性     */    @Test    public void testConnection2() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {        //获取Driver的实现类对象--->使用反射来获取        Class classNo1 =  Class.forName("com.mysql.jdbc.Driver"); //forName后+的是实现类的路径        //调取newInstance方法--->1、有无参构造器。2、权限要够        Driver driver = (Driver) classNo1.newInstance(); //接收为Driver对象(强制转型)        /*        这样做的目的:        1、通过反射的方式获取了Driver的实现类对象        2、增强了可移植性         */        //提供要连接的数据库URL        String url = "jdbc:mysql://localhost/xxxx";        //提供连接需要的用户名和密码--->Properties的方式        Properties info = new Properties(); //properties本身就是键值对形式的,用于封装用户名和密码--->新建properties对象        info.setProperty("user", "www");        info.setProperty("password", "123456");        //获取连接        Connection conn = driver.connect(url, info);        System.out.println(conn);    }

小结:

  • 因为com.mysql.jdbc.Driver是第三方API,所以在程序当中一般不暴露在代码里面

  • 使用反射获取Driver驱动类

  • 使用Class类对象下的newInstance方法创建事务

使用DriverManager进行驱动的注册和获取连接对象

示例代码:

    //使用DriverManager(这是一个具体的类)替换Driver    @Test    public void testConnection3() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {        /*        步骤合并成了两步:        1、注册驱动        2、获取连接对象         */        //获取Driver的实现类对象--->通过反射获取        Class classNo2 = Class.forName("com.mysql.jdbc.Driver");        Driver driver = (Driver) classNo2.newInstance();        //获取连接信息        String url = "jdbc:mysql://localhost/xxxx";        String user = "www";        String password = "654321";        //注册驱动        DriverManager.registerDriver(driver);        //获取连接        Connection conn = DriverManager.getConnection(url, user, password);        System.out.println(conn);    }

小结:

  • DriverManager下提供了获取Connection对象的方法,调用传参可以获取到返回的对象

  • 使用DriverManager对注册驱动、获取连接进行统一管理

优化过程--->在加载Driver驱动类的时候实际上已经帮我们做了一些事情。在Driver码当中都有体现

    //省略一些步骤    @Test    public void testConnection4() throws ClassNotFoundException, SQLException {        //提供基础清晰        String url = "jdbc:mysql://localhost/xxxx";        String user = "www";        String password = "654321";        //加载驱动--->;mysql的Driver实现类当中实现了注册驱动等操作        Class.forName("com.mysql.jdbc.Driver");        //获取连接        Connection conn = DriverManager.getConnection(url, user, password);        System.out.println(conn);    }

导入驱动的时候已经获取到了驱动,所以可以省略注释(仅是mysql)

    //省略一些步骤    @Test    public void testConnection4() throws ClassNotFoundException, SQLException {        //提供基础清晰        String url = "jdbc:mysql://localhost/xxxx";        String user = "www";        String password = "654321";        //获取连接        Connection conn = DriverManager.getConnection(url, user, password);        System.out.println(conn);    }

将提供的内容写到配置文件当中

    //将提供的信息写到配置文件当中    @Test    public void testConnection5() throws IOException, ClassNotFoundException, SQLException {        //将数据库连接需要的基本信息声明到配置文件当中,通过读取配置文件的方式连接数据库        /*        1、读取配置文件中的四个基本信息--->获取到当前类的加载器在加载resources目录下的配置文件--->这样就会默认的生成一个流        2、创建一个properties对象引用        3、使用该类下的加载方法加载流文件        4、通过getProperties方法读取文件当中的内容         */        InputStream in = ConnectionTestNo1.class.getClassLoader().getResourceAsStream("JDBC.properties");        Properties prop = new Properties();        prop.load(in);        //读取文件内容设置成变量        String user = prop.getProperty("USERNAME");        String password = prop.getProperty("PASSWORD");        String driverClass = prop.getProperty("DRIVER");        String url = prop.getProperty("URL");        //加载驱动        Class.forName(driverClass);        //获取连接        Connection conn = DriverManager.getConnection(url, user, password);        System.out.println(conn);    }

配置文件:

DRIVER=com.mysql.jdbc.DriverURL=jdbc:mysql://localhost/rbac_v2USERNAME=wwwPASSWORD=654321

小结:

获取数据库连接必须要有的四个基本要素

  • 加载对应数据库的驱动类

  • 要有URL--->数据库的IP地址和数据库名

  • 配置文件

    • username

    • password

通过配置文件和代码分离实现了数据和代码的分离--->解耦

如果不分离的话打包了以后要重新的修改代码才能够更改连接。使用文件的话直接更改文件参数即可。不需要对打包好的程序重新打包

脚本宝典总结

以上是脚本宝典为你收集整理的9.23JavaWeb之JDBC获取数据库连接方式全部内容,希望文章能够帮你解决9.23JavaWeb之JDBC获取数据库连接方式所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。