通过Driver与DriverManager连接数据库

  • Post author:
  • Post category:其他


一、通过Driver接口连接数据库
Driver是JAVA中的一个接口,它的实现是由数据库厂商去实现的,能够通过它去获取数据库的连接,想要使用Driver,需要通过如下步骤:
①从Mysql官网下载到驱动后解压
②在当前项目中新建一个文件夹
③将解压后的驱动文件夹中的jar结尾的文件添加到步骤②中新建的文件夹的目录下
④右键单击jar文件,选择bulid  path,然后add to bulidpath
导入了之后我们就可以根据Driver的实体对象去获取数据库的连接,实现方法如下:
①创建一个Driver实现类的对象
    Driver driver = new com.mysql.jdbc.Driver();

②创建连接数据库的基本信息String类型的name,Properties类型的info
    String url = "jdbc:mysql://localhost:3306/sid" ;
    Properties info = new Properties();

url的书写方式如上面所示,上面是连接本地Mysql的方式,链接最后的sid为要连接的数据库名

③调用Driver接口的connect(url,info)方法获取数据库连接
    Connection connection = driver .connect(url, info);
    System. out.println(connection );

但是这个方法有个弊端,就是不能解耦,当在连接其他数据库的时候就要重写这个方法,所以我们采用将连接数据库所需的信息存放在文件中,当需要连接不同的数据库厂商时可以修改配置文件从而达到解耦,具体操作如下:
1、在当前项目中创建一个文件名为”jdbc.properties”,并写入如下内容并保存
                     driver=com.mysql.jdbc.Driver
                     jdbcurl=jdbc:mysql://localhost:3306/test
                     user=root
                     password=090936//这里的密码是安装mysql等数据库时所设置的密码



2、然后在相应的方法中读取该文件,按照以下方式执行

               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) Class.forName(driverClass).newInstance(); //反射创建Driver对象
                     
                     Properties info = new Properties();
                      info.put( "user", user );
                      info.put( "password", password );
                     Connection connection = driver .connect(jdbcurl, info);
                      return connection ;
              }

像上面这样,就可以做到对任意数据库厂商的连接了,而我们只需要更改配置文件的信息即可
二、通过DriverManager获取数据库连接
DriverManager是驱动的管理类,用它来连接数据库比Driver更为方便,只需要利用反射加载好数据库的驱动程序然后再调用其中的getConnection()方法即可完成数据库的连接,因为可以通过改变传入getConnection()方法的参数来返回不同的数据库连接,所以它可以管理不同的驱动程序,下面就是通过DriverManager来获取数据库连接的步骤:
1、在当前项目中创建一个文件名为”jdbc.properties”,并写入如下内容并保存

                     driver=com.mysql.jdbc.Driver
                     jdbcurl=jdbc:mysql://localhost:3306/test //注意这里连接的是mysql数据库
                     user=root
                     password=090936//这里的密码是安装mysql等数据库时所设置的密码



2、进行连接数据库的一系列操作,具体过程如下
       public Connection getConnection1() throws Exception{
//           1、创建连接数据库的基本信息
             String driverClass = null;
             String url = null;
             String user = null;
             String password = null;
//           2、创建Properties对象并获取jdbc.Properties对应的输入流
             Properties properties = new Properties();
             InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties");
//           3、加载对应的输入流
             properties.load(in);
//           获取输入流中的信息从而决定连接数据库的基本信息的内容
             driverClass = properties.getProperty("driver");
             url = properties.getProperty("jdbcurl");
             user = properties.getProperty("user");
             password = properties.getProperty("password");
//           5、利用反射加载数据库驱动程序
             Class.forName(driverClass);
//           6、通过DriverManager中的getConnection()方法获取数据库连接
             return DriverManager.getConnection(url, user, password);
       }

3、进行连接的测试
在完成了前两个步骤之后,在主函数中进行测试,测试内容如下
       public static void main(String[] args) throws Exception {
             TestDriverManager e = new TestDriverManager();
              System.out.println(e.getConnection1());
       }

若输出语句为



com.mysql.jdbc.JDBC4Connection@xxxxxx

则数据库的连接完成了



版权声明:本文为qq_38785658原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。