`

JDBC中的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-ODBC 桥驱动程序) 建立连接所需所有步骤的示例: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动程序 String url = "jdbc:odbc:fred"; DriverManager.getConnection(url, "userID", "passwd");
分享到:
评论

相关推荐

    JDBC DriverManager.registerDriver(new Driver());

    在Java数据库连接(JDBC)中,`DriverManager.registerDriver(new Driver())` 是一个关键的步骤,用于将数据库驱动程序注册到JDBC的`DriverManager`中,以便后续的数据库连接操作。这个过程通常在应用程序启动时进行...

    JDBC详解 JDBC详解

    JDBC(Java Database Connectivity)是Java语言中用来访问数据库的应用程序接口(API)。它提供了一种统一的方式来访问不同的数据库管理系统。JDBC详解将详细介绍JDBC的管理层、驱动程序、连接建立和数据库操作等...

    jdbc面试题

    在 Java 中,JDBC 是一个独立的 API,提供了统一的接口来访问不同的关系型数据库。下面是 JDBC 的一些重要知识点: 1. 什么是 JDBC? JDBC 全称为 Java DataBase Connection,是一个 Java API,提供了统一的接口来...

    自学jdbc心得体会

    二、JDBC的API * java.sql包和javax.sql包 * Driver接口(驱动):在加载某一Driver类时,它应该创建自己的实例并向DriverManager注册该实例。 * DriverManager类(驱动管理器):可以创建连接,它本身就是一个创建...

    JDBC中驱动加载的过程分析(上)

    #### 二、DriverManager类 `DriverManager`类是JDBC框架的核心组件之一,负责管理数据库驱动程序的注册和连接的建立。它提供了一系列静态方法来执行这些任务,并且本身不可实例化,这意味着所有操作都应通过其静态...

    全面解析JDBC 全面解析JDBC

    #### 二、JDBC的重要性及发展历程 JDBC的重要性主要体现在以下几个方面: 1. **标准化**:JDBC提供了一套标准API,使得Java开发人员能够以相同的方式连接到不同的数据库,这极大地提高了代码的可移植性和灵活性。 ...

    sqljdbc42 jdbc for java

    《SQLJDBC42:Java中的数据库连接利器》 在Java编程中,数据库操作是不可或缺的一部分,而SQLJDBC42则是Oracle公司提供的一款高效、可靠的Java数据库连接(JDBC)驱动程序,专为Java开发者设计,使得Java应用程序...

    eclipse中jdbc连接的jar包

    标题"eclipse中jdbc连接的jar包"指的是在Eclipse中使用JDBC进行数据库连接时所需的jar包。这些jar包通常包含了JDBC驱动,使得Java程序能够建立到数据库的连接,执行SQL语句,并处理结果集。 描述中的"Myeclipse中...

    sqljdbc41、sqljdbc42的官方jar包

    在Java编程语言中,JDBC(Java Database Connectivity)是一个核心的API,用于连接Java应用程序与各种类型的数据库。这里我们关注的是两个特定版本的Microsoft SQL Server的JDBC驱动:sqljdbc41.jar和sqljdbc42.jar...

    sqlserver驱动包 jdbc驱动 sqljdbc.jar和sqljdbc4.jar

    在Java中,JDBC驱动通常分为四种类型:Type 1、Type 2、Type 3和Type 4。sqljdbc.jar和sqljdbc4.jar属于Type 4,即纯Java实现的驱动,无需依赖于数据库供应商的特定接口或中间件,因此具有较好的跨平台性。 要使用...

    JDBC6和JDBC14

    **JDBC(Java Database Connectivity)**是Java编程语言中用于规范客户端程序如何访问数据库的应用程序接口,它提供了标准的API让Java程序员能够连接到各种不同的数据库。JDBC6和JDBC14是JDBC的不同版本,它们分别...

    jdbc核心代码.docx

    1. SQLException:JDBC中的异常处理,SQLException是JDBC中的基本异常类,用于处理数据库操作中的异常。 2. 数据类型转换:JDBC提供了多种数据类型转换的方法,例如getInt()、getString()等。 3. Statement和...

    JDBC学习资料 jdbc编程

    JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如执行SQL语句、连接数据库以及处理返回结果等功能。它是Java平台中用于数据库访问的标准API,类似于ODBC...

    java数据库连接DriverManager

    Java中的`DriverManager`是JDBC(Java Database Connectivity)的核心组件,主要负责管理数据库驱动程序并建立数据库连接。它的功能包括跟踪已注册的驱动程序、处理登录限制以及创建与数据库的连接。`DriverManager`...

    Dm7JdbcDriver16.jar Dm7JdbcDriver17.jar Dm7JdbcDriver18.jar

    在给定的压缩包文件中,包含了三个不同版本的达梦JDBC驱动,分别是Dm7JdbcDriver16.jar、Dm7JdbcDriver17.jar和Dm7JdbcDriver18.jar。 1. **JDBC驱动介绍**: JDBC是Java中用于与各种数据库进行交互的标准接口,它...

    Access_JDBC30

    2. **建立连接**:在Java代码中,使用`Class.forName()`方法加载JDBC驱动,然后使用`DriverManager.getConnection()`创建数据库连接。例如: ```java Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection...

    jdbc入门至精通

    **第二节 jdbc的概念** 2.1 **概念** JDBC是Java API(应用程序接口),它为Java程序员提供了一组接口和类,用于与各种数据库进行交互,实现数据的增删改查操作。JDBC是Sun Microsystems公司制定的标准,现已被...

    JDBC常考知识点,常用api

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与关系型数据库进行交互的一组标准接口和类。通过JDBC API,开发者能够连接到各种不同类型的数据库,如MySQL、Oracle等,执行SQL语句来实现数据的增删...

Global site tag (gtag.js) - Google Analytics