JDBC学习笔记

 
 
加载驱动方法: 
 
1.调用方法 Class.forName:
Class.forName("com.mysql.jdbc.Driver");
 
2. 通过registerDriver方法注册:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
 

3.通过添加系统的jdbc.drivers属性:

System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");

 

Driver的功能

      java.sql.Driver接口规定了Driver应该具有以下功能:

其中:

1.

acceptsURL(String url) 方法用来测试对指定的url,该驱动能否打开这个url连接。driver对自己能够连接的url会制定自己的协议,只有符合自己的协议形式的url才认为自己能够打开这个url,如果能够打开,返回true,反之,返回false;

 
2.

connect(String url,Properties info)方法,创建Connection对象,用来和数据库的数据操作和交互,而Connection则是真正数据库操作的开始(在此方法中,没有规定是否要进行acceptsURL()进行校验)。

手动加载驱动 Driver 并实例化进行数据库操作的例子

[java] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. public static void driverTest(){  
  2.     try {  
  3.         //1.加载oracle驱动类,并实例化  
  4.         Driver driver = (Driver) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();  
  5.   
  6.         //2.判定指定的URL oracle驱动能否接受(符合oracle协议规则)  
  7.         boolean flag = driver.acceptsURL("jdbc:oracle:thin:@127.0.0.1:1521:xe");  
  8.         //标准协议测试  
  9.         boolean standardFlag1 = driver.acceptsURL("jdbc:oracle:thin:@//<host>:<port>/ServiceName");  
  10.         boolean standardFlag2 = driver.acceptsURL("jdbc:oracle:thin:@<host>:<port>:<SID>");  
  11.         System.out.println("协议测试:"+flag+" "+standardFlag1+" "+standardFlag2);  
  12.           
  13.         //3.创建真实的数据库连接:  
  14.         String  url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";  
  15.         Properties props = new Properties();  
  16.         props.put("user", "louluan");  
  17.         props.put("password", "123456");  
  18.         Connection connection = driver.connect(url, props);  
  19.         //connection 对象用于数据库交互,代码省略。。。。。  
  20.           
  21.     } catch (Exception e) {  
  22.         System.out.println("加载Oracle类失败!");  
  23.         e.printStackTrace();  
  24.     } finally{  
  25.           
  26.     }  
  27. }  
   

       上述的手动加载Driver并且获取连接的过程稍显笨拙:如果现在我们加载进来了多个驱动Driver,那么手动创建Driver实例,并根据URL进行创建连接就会显得代码杂乱无章,并且还容易出错,并且不方便管理。JDBC中提供了一个DriverManager角色,用来管理这些驱动Driver。
 
 
 
 
 
 
 
 
 
 

事实上,一般我们操作Driver,获取Connection对象都是交给DriverManager统一管理的。DriverManger可以注册和删除加载的驱动程序,可以根据给定的url获取符合url协议的驱动Driver或者是建立Conenction连接,进行数据库交互。

  

    以下是DriverManager的关键方法摘要:

    

    DriverManager 内部持有这些注册进来的驱动 Driver,由于这些驱动都是 java.sql.Driver 类型,那么怎样才能获得指定厂商的驱动Driver呢?答案就在于:

      java.sql.Driver接口规定了厂商实现该接口,并且定义自己的URL协议。厂商们实现的Driver接口通过acceptsURL(String url)来判断此url是否符合自己的协议,如果符合自己的协议,则可以使用本驱动进行数据库连接操作,查询驱动程序是否认为它可以打开到给定 URL 的连接。

使用DriverManager创建 Connection 连接对象

      创建 Connection 连接对象,可以使用驱动Driver的 connect(url,props),也可以使用 DriverManager 提供的getConnection()方法,此方法通过url自动匹配对应的驱动Driver实例,然后调用对应的connect方法返回Connection对象实例。

[java] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. Driver driver  = DriverManager.getDriver(url);  
  2.             Connection connection = driver.connect(url, props);  
上述代码等价于:
[java] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. Class.forName("oracle.jdbc.driver.OracleDriver");  
  2. Connection connection = DriverManager.getConnection(url, props);  
http://blog.csdn.net/luanlouis/article/details/29850811
原文地址:https://www.cnblogs.com/zedosu/p/6515575.html