通过Driver与DriverManager连接数据库

来源:互联网 发布:mac照片导入lightroom 编辑:程序博客网 时间:2024/06/07 06:17
一、通过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 则数据库的连接完成了