java learnging

一块探讨JAVA的奥妙吧
posts - 34, comments - 27, trackbacks - 0, articles - 22

JDBC学习--JDBC驱动程序

Posted on 2005-01-15 00:51 bigseal 阅读(715) 评论(0)  编辑  收藏

JDBC驱动程序

JDBC通过一系列接口来访问数据库,而这些接口的实现则是由不同的数据库厂商或组织实现的。要实现对某一特定类型数据库的访问就要通过注册JDBC驱动程序来让程序知道去哪里调用JDBC API 接口的实现。

先看下面的一段程序:

Class.froName("com.mysql.jdbc.Driver").newInstance();//加载类并初始化这个类的静态初始化部分
String url = "jdbc:mysql://localhost:3306/math";               //数据库URL
String userName = "root";                                                     //连接数据库的用户名
String password = "password";                                            //密码
Connection oConn = DriverManager.getConnection(url,userName,password);//建立数据库连接

java.sql.DriverManager:从名字就可以看出是用于驱动程序管理的,它的主要责任是保留一个驱动程序的列表,并通过getConnection方法来给应用程序提供与所请求的URL相匹配的Driver(可能是由于同一个数据库的驱动程序可能是有几种不同的实现方式,但如果DriverManager中对一个URL有多个匹配的Driver,它是不是只选择第一个找到的呢?),并返回Connection对象,如果找不到就会抛出一个异常,也就是这一句 Connection oConn = DriverManager.getConnection(url,userName,password)。同时还提供了registerDriver()和deregisterDriver(),这两个方法允许驱动程序的工具用DriverManager注册驱动程序或从列表中删除。可以感觉出是在用Class.froName("com.mysql.jdbc.Driver").newInstance();加载类并初始化这个类的静态初始化部分时调用registerDriver()的方法注册的,我在mysql驱动程序的源码的Driver类中找到对这个方法的调用。

package com.mysql.jdbc;
public class Driver extends NonRegisteringDriver 
{
  

    
//

    
// Register ourselves with the DriverManager
    
//
    static 
{
        
try 
{
            java.sql.DriverManager.registerDriver(
new
 Driver());
        }
 catch (java.sql.SQLException E) {
            
throw new RuntimeException("Can't register driver!"
);
        }


        
if (DEBUG) {
            Debug.trace(
"ALL"
);
        }

    }


    
/**
     * Construct a new driver and register it with DriverManager
     *
     * @throws java.sql.SQLException if a database error occurs.
     
*/

    
public Driver() throws java.sql.SQLException {
        
// Required for Class.forName().newInstance()

    }

}

只有注册用户登录后才能发表评论。


网站导航: