`
isiqi
  • 浏览: 16699175 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

JDBC系列教程(二)---驱动设置

阅读更多
DriverManager
本概述摘自《JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference》,目前正由 JavaSoft 继续编写。这本书既是 JDBC 的教程,也是一本权威性参考手册,将作为 Java 系列的一部分在 1997 年春季由 Addison-Wesley 出版公司出版。

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-ODBC 桥驱动程序)建立连接所需所有步骤的示例:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动程序
String url = "jdbc:odbc:fred";
DriverManager.getConnection(url, "userID", "passwd");
分享到:
评论

相关推荐

    Java高级教程课件 java数据库教程 JDBC教程 4-jdbc编程(1)-L(共18页).pptx

    Java数据库教程JDBC是Java开发人员学习如何与各种数据库系统交互的重要内容。JDBC全称为Java Database Connectivity,它提供了一套API,使得Java应用程序能够连接并执行SQL语句,从而与不同类型的数据库管理系统...

    水晶报表CrystalReport2008使用JDBC连接MySQL数据库-详细步骤.doc

    为了确保Crystal Report 2008能够顺利地通过JDBC连接到MySQL数据库,需要进行一系列的准备工作。以下是具体的步骤: 1. **安装Crystal Report 2008**:确保您的计算机上已经安装了该版本的水晶报表。 2. **下载并...

    JDBC教程

    **JDBC教程全面概述** Java Database Connectivity(JDBC)是Java平台中用于与关系数据库进行交互的一种标准接口。它是Java编程语言的一部分,允许Java应用程序执行SQL语句并处理结果。理解JDBC对于任何想要在Java...

    JDBC系列数据库教程

    ### JDBC系列数据库教程知识点解析 #### 一、JDBC简介及连接数据库的基础概念 JDBC (Java Database Connectivity) 是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言...

    JDBC视频教程(15天)

    ### JDBC视频教程(15天)知识点概览 #### 一、JDBC简介与环境搭建 - **JDBC概述**: - JDBC(Java Database Connectivity)是Java中用来对关系数据库进行访问的一种标准API。 - JDBC定义了一组用于执行SQL语句的...

    一头扎进JDBC视频教程源码

    这个"一头扎进JDBC视频教程源码"系列涵盖了从基础到高级的JDBC使用方法,帮助学习者深入理解和掌握JDBC技术。以下是根据提供的源码文件名推测的各个章节知识点: 1. **第一讲:JDBC基础** - JDBC API简介:了解...

    Java高级教程课件 java数据库教程 JDBC教程 2-oracle基础(1)(共48页).ppt

    Java数据库教程,特别是JDBC教程,是学习Java与数据库交互的关键部分。JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如连接数据库、发送SQL语句以及...

    Spring Boot 系列教程 JDBC

    【Spring Boot 系列教程 JDBC】是一套针对Java开发者深入学习Spring Boot集成JDBC技术的教程。本教程旨在帮助开发者理解和应用Spring Boot框架中的JDBC功能,以简化数据库操作,提高开发效率。JDBC(Java Database ...

    jdbc sql2000驱动

    "自己收集的一些资源,大家共享"这句描述表明这是一个个人整理的资源集合,可能包含了关于如何在Java项目中配置和使用SQL Server 2000驱动的教程、示例代码、驱动程序下载链接等,目的是为了分享给有需要的人。...

    水晶报表CrystalReport2008使用JDBC连接Oracle,MySQL数据库-详细傻瓜步骤

    在使用水晶报表CrystalReport2008通过JDBC连接Oracle或MySQL数据库之前,需要进行一系列的准备。这些准备工作包括安装必要的软件、获取并配置所需的JDBC驱动程序等。 **所需工具:** - **Crystal Report 2008**:...

    dbeaver-driver-all:dbeaver所有jdbc驱动都在这,dbeaver all jdbc drivers ,come and download with me , one package come with all jdbc drivers

    标题中的“dbeaver-driver-all”指的是DBeaver数据库管理工具的JDBC驱动程序集合,它包含了一系列用于连接各种数据库的Java Database Connectivity (JDBC) 驱动。DBeaver是一款开源、免费且跨平台的数据库管理和开发...

    jdbc.rar_java jdbc_java 数据库 连接_jdbc_jdbc-odbc_数据 插入 删除

    JDBC提供了一个`DriverManager`类,它包含了一系列静态方法用于管理数据库驱动程序和数据库的连接。以下是一个简单的示例: ```java import java.sql.Connection; import java.sql.DriverManager; public class ...

    JDBC使用教材-同济大学软件学院

    本教材“JDBC使用教材-同济大学软件学院”是专为初学者设计的一份教程,旨在帮助新接触JDBC的学员快速掌握其基本概念和应用。 JDBC的核心概念主要包括以下几个方面: 1. **驱动管理**:在Java程序中使用JDBC之前,...

    JDBC基础教程之ResultSet对象.doc )

    ### JDBC基础教程之ResultSet对象详解 #### 一、ResultSet对象概览 `ResultSet`对象是Java Database Connectivity (JDBC) API中的一个核心组件,用于处理SQL查询结果。它充当了一个临时的数据存储,其中包含了所有...

    Java_JDBC学习教程 由浅入深.doc

    ### Java JDBC 学习教程知识点总结 #### 一、JDBC 概念及与应用程序的关系 **2.1 JDBC 概念** - JDBC (Java Database Connectivity) 是 Java 语言中用来对关系型数据库进行访问的标准 Java API。 - 它提供了一系列...

    MySQL最新驱动jar包:5.1.49

    MySQL是世界上最流行的关系型数据库管理系统之一,而MySQL的Java驱动程序,也称为JDBC驱动,是连接Java应用程序与MySQL数据库的关键组件。标题提到的"MySQL最新驱动jar包:5.1.49"指的是用于Java应用程序的MySQL ...

    JDBC核心技术视频_1.rar

    总的来说,这个视频教程系列的首部分提供了全面的JDBC基础教学,从概念到实践,帮助开发者掌握核心的数据库操作技巧,为后续的数据库开发工作打下坚实基础。由于视频资源被分为三部分上传,学习者需要下载全部内容以...

    尚硅谷_JDBC【全】1

    - 引入JDBC驱动:首先,需要获取对应数据库的JDBC驱动,如MySQL的`mysql-connector-java-5.1.36-bin.jar`,并将该驱动添加到项目的类路径中。对于动态Web项目,驱动应放在`WEB-INF/lib`目录下。 - 加载并注册驱动...

    Java实训教程 Java软件开发实战 Java类库 第7章 JDBC 共113页.pptx

    本章节作为《Java软件开发实战》系列教程的一部分,专注于讲解Java Database Connectivity (JDBC) 的核心概念及其应用实践。该教程旨在帮助学习者掌握Java语言在数据库操作方面的高级技能,并通过丰富的示例和练习...

    一头扎进 JDBC 视频教程 java1234出品

    这个"一头扎进 JDBC 视频教程 java1234出品"很可能是由java1234这个机构或个人制作的一系列深入讲解JDBC的教育资源。在本教程中,你将学习如何使用JDBC来连接、查询、更新和管理数据库。 首先,JDBC是Java API的一...

Global site tag (gtag.js) - Google Analytics