Class.forName("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;
connect(String url,Properties info)方法,创建Connection对象,用来和数据库的数据操作和交互,而Connection则是真正数据库操作的开始(在此方法中,没有规定是否要进行acceptsURL()进行校验)。
手动加载驱动 Driver 并实例化进行数据库操作的例子
- public static void driverTest(){
- try {
- //1.加载oracle驱动类,并实例化
- Driver driver = (Driver) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
- //2.判定指定的URL oracle驱动能否接受(符合oracle协议规则)
- boolean flag = driver.acceptsURL("jdbc:oracle:thin:@127.0.0.1:1521:xe");
- //标准协议测试
- boolean standardFlag1 = driver.acceptsURL("jdbc:oracle:thin:@//<host>:<port>/ServiceName");
- boolean standardFlag2 = driver.acceptsURL("jdbc:oracle:thin:@<host>:<port>:<SID>");
- System.out.println("协议测试:"+flag+" "+standardFlag1+" "+standardFlag2);
- //3.创建真实的数据库连接:
- String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
- Properties props = new Properties();
- props.put("user", "louluan");
- props.put("password", "123456");
- Connection connection = driver.connect(url, props);
- //connection 对象用于数据库交互,代码省略。。。。。
- } catch (Exception e) {
- System.out.println("加载Oracle类失败!");
- e.printStackTrace();
- } finally{
- }
- }
上述的手动加载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对象实例。
上述代码等价于:
- Driver driver = DriverManager.getDriver(url);
- Connection connection = driver.connect(url, props);
- Class.forName("oracle.jdbc.driver.OracleDriver");
- Connection connection = DriverManager.getConnection(url, props);