zoukankan      html  css  js  c++  java
  • 通过Driver获取数据库连接

    先看一下文件,在当前包下有一个properties配置文件,在根目录下有一个lib文件夹,里面放的是mySql的驱动jar包

    Driver :是一个接口,数据库厂商必须提供实现的接口,能从其中获取数据库连接 可以通过Driver的实现类的对象获取数据库连接
    * 1.加入mySql驱动
    * 1.1 解压mysql-connector-java-5.1.39.zip 1.2 在当前项目下新建lib目录 1.3
    * 把mysql-connector-java-5.1.39-bin.jar复制到lib目录下 1.4 右键,buildPath,add to
    * buildPath加入到类路径下

    第一种方法,不需要配置文件,直接获取数据库连接

     1 @Test
     2     public void testDriver() throws Exception {
     3         // 1.创建一个Driver 的实现类的对象
     4         Driver driver = new com.mysql.jdbc.Driver();
     5         // 2.准备连接数据库的基本信息,url,user,password
     6         String url = "jdbc:mysql://localhost:3306/test";
     7 
     8         Properties info = new Properties();
     9         info.put("user", "root");
    10         info.put("password", "123456");
    11 
    12         // 3.调用Driver接口的connect(url,info)获取数据库连接
    13         Connection connection = driver.connect(url, info);
    14 
    15         System.out.println(connection);//com.mysql.jdbc.JDBC4Connection@73f712
    16     }

     为了使得程序解耦,并且更加通用,使用如下方案

    编写一个通用的方法,在不修改源程序的情况下,可以获取任何数据库的连接 解决方案:把数据库驱动Driver
    实现类的全类名、url、user、password 放入到一个配置文件中, 通过修改配置文件的方式实现和具体的数据库解耦。

    代码:

    public Connection getConnection() throws Exception {
    
            String driverClass = null;
            String jdbcUrl = null;
            String user = null;
            String password = null;
    
            // 读取类路径下的 jdbc.properties 文件
            InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties");
            Properties properties = new Properties();
            properties.load(in);
            driverClass = properties.getProperty("driver");
            jdbcUrl = properties.getProperty("jdbcUrl");
            user = properties.getProperty("user");
            password = properties.getProperty("password");
    
            // 通过反射创建 Driver 对象.
            Driver driver = (Driver) Class.forName(driverClass).newInstance();
            Properties info = new Properties();
            info.put("user", user);
            info.put("password", password);
    
            // 通过 Driver 的 connect 方法获取数据库连接.
            Connection connection = driver.connect(jdbcUrl, info);
            return connection;
        }
        
        @Test
        public void testGetConnection() throws Exception{
            System.out.println(getConnection());//com.mysql.jdbc.JDBC4Connection@1556938
        }

    properties文件内容如下

    #driver=oracle.jdbc.driver.OracleDriver
    #jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl
    #user=scott
    #password=java
    
    driver=com.mysql.jdbc.Driver
    jdbcUrl=jdbc:mysql://localhost:3306/test
    user=root
    password=123456

    这样如果想连接其他数据库时,只需修改此文件即可,无需修改代码

  • 相关阅读:
    JavaScript实现类的private、protected、public、static以及继承
    OSS网页上传和断点续传(STSToken篇)
    OSS网页上传和断点续传(OSS配置篇)
    Linq sum()时遇到NULL
    SQLSERVER事务日志已满 the transaction log for database 'xx' is full
    笔记本高分辨软件兼容问题,字体太小或模糊
    H5上传图片之canvas
    An error occurred while updating the entries. See the inner exception for details.
    无限级结构SQL查询所有的下级和所有的上级
    SQLserver 进程被死锁问题解决
  • 原文地址:https://www.cnblogs.com/gode/p/5815280.html
Copyright © 2011-2022 走看看