网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.编写可在线收发E-mail的Java App.
.java基础知识——java入门与加深.
.Linux 平台的 JVM 性能评测.
.Sun Blade和Java工作站领跑传统工.
.用Eclipse作为Jakarta Tomcat的开.
.新手入门:JAVA数据库基本操作指.
.新手入门:Java语言完成UDP协议编.
.设计Java应用程序.
.条件编译.
.JGraph 经典常见问题解答 (FAQ).
.J2ME 进度条与线程化模型实例解析.
.在Java中实现浮点数的精确计算.
.JDO能给我们带来什么.
.J2EE建议的学习路线.
.ServletContext接口.
.Hello Unicode —系统语言环境设.
.Jakarta Commons项目研究--pool.
.使用 EJB 组件你需要了解些什么呢.
.Java性能的优化(上).
.APPLET实例-从源代码到应用.

JDBCTM 入门指南(3)

发表日期:2008-1-5



  JDBCTM 入门指南(3)

3 - DriverManager

· 3.1 概述

DriverManager 类是 JDBC 的治理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。
另外,DriverManager 类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。

对于简单的应用程序,一般程序员需要在此类中直接使用的唯一方法是 DriverManager.getConnection。正如名称所示,该方法将建立与
数据库的连接。JDBC 答应用户调用 DriverManager 的方法getDriver、getDrivers 和 registerDriver 及 Driver 的方法connect。但多数情况下,让 DriverManager 类治理建立连接的细节为上策。

· 3.1.1 跟踪可用驱动程序

DriverManager 类包含一列 Driver 类,它们已通过调用方法DriverManager.registerDriver 对自己进行了注册。所有 Driver类都必须包含有一个静态部分。它创建该类的实例,然后在加载该实例时 DriverManager 类进行注册。这样,用户正常情况下将不会直接调用 DriverManager.registerDriver;而是在加载驱动程序时由驱动程序自动调用。加载 Driver 类,然后自动在 DriverManager中注册的方式有两种:

通过调用方法 Class.forName。这将显式地加载驱动程序类。由于这与外部设置无关,因此推荐使用这种加载驱动程序的方法。以下代码
加载类 acme.db.Driver:Class.forName("acme.db.Driver");

假如将 acme.db.Driver 编写为加载时创建实例,并调用以该实例为参数的 DriverManager.registerDriver(本该如此),则它在
DriverManager 的驱动程序列表中,并可用于创建连接。

通过将驱动程序添加到 Java.lang.System 的属性 jdbc.drivers 中这是一个由 DriverManager 类加载的驱动程序类名的列表,由冒号
分隔:初始化 DriverManager 类时,它搜索系统属性 jdbc.drivers,假如用户已输入了一个或多个驱动程序,则 DriverManager 类将试图加载它们。

以下代码说明程序员如何在 ~/.hotjava/properties 中输入三个驱动程序类(启动时,HotJava 将把它加载到系统属性列表中):

jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.test.ourDriver;

对 DriverManager 方法的第一次调用将自动加载这些驱动程序类。

注重:加载驱动程序的第二种方法需要持久的预设环境。假如对这一点不能保证,则调用方法 Class.forName 显式地加载每个驱动程序就显得更为安全。这也是引入特定驱动程序的方法,因为一旦 DriverManager 类被初始化,它将不再检查 jdbc.drivers 属性列表。

在以上两种情况中,新加载的 Driver 类都要通过调用 DriverManager.registerDriver类进行自我注册。如上所述,加载类时将自动执行这一过程。

由于安全方面的原因,JDBC 治理层将跟踪哪个类加载器提供哪个驱动程序。这样,当 DriverManager 类打开连接时,它仅使用本地文件系统或与发出连接请求的代码相同的类加载器提供的驱动程序。

· 3.1.2 建立连接

加载 Driver 类并在 DriverManager 类中注册后,它们即可用来与数据库建立连接。当调用 DriverManager.getConnection 方法发出连接请求时,DriverManager 将检查每个驱动程序,查看它是否可以建立连接。

有时可能有多个 JDBC 驱动程序可以与给定的 URL 连接。例如,与给定远程数据库连接时,可以使用 JDBC-ODBC 桥驱动程序、JDBC 到
通用网络协议驱动程序或数据库厂商提供的驱动程序。在这种情况下测试驱动程序的顺序至关重要,因为 DriverManager 将使用它所找到的第一个可以成功连接到给定 URL 的驱动程序。

首先 DriverManager 试图按注册的顺序使用每个驱动程序(jdbc.drivers 中列出的驱动程序总是先注册)。它将跳过代码不可信任的驱动程序,除非加载它们的源与试图打开连接的代码的源相同。

它通过轮流在每个驱动程序上调用方法 Driver.connect,并向它们传递用户开始传递给方法 DriverManager.getConnection 的 URL 来对驱动程序进行测试,然后连接第一个认出该 URL 的驱动程序。

上一篇:JDBC编程基础(1) 人气:1026
下一篇:JDBCTM 入门指南(1) 人气:975
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐