1、概述
DriverManager 类是 JDBC 的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager 类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。
对于简单的应用程序,一般程序员需要在此类中直接使用的唯一方法是 DriverManager.getConnection。正如名称所示,该方法将建立与数据库的连接。JDBC 允许用户调用 DriverManager 的方法 getDriver、getDrivers 和 registerDriver 及 Driver 的方法 connect。但多数情况下,让 DriverManager 类管理建立连接的细节为上策。
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 类打开连接时,它仅使用本地文件系统或与发出连接请求的代码相同的类加载器提供的驱动程序。
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的作用 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和...
### JDBC基础教程之连接知识点详解 #### 一、Connection对象及其作用 - **Connection对象**:在JDBC中,`Connection`对象代表了一个与数据库之间的连接。通过这个连接,应用程序可以执行SQL语句并获取结果集。 - *...
### JDBC基础教程之ResultSet对象详解 #### 一、ResultSet对象概览 `ResultSet`对象是Java Database Connectivity (JDBC) API中的一个核心组件,用于处理SQL查询结果。它充当了一个临时的数据存储,其中包含了所有...
### JDBC基础教程之PreparedStatement知识点详解 #### 一、概述 `PreparedStatement`是Java数据库连接(JDBC)API中的一种重要接口,它继承自`Statement`接口,并在其基础上进行了扩展和优化。`PreparedStatement`...
JDBC是Java SE的一部分,也是Java EE的基础,为跨平台的数据访问提供了统一的接口。 ### JDBC核心概念 1. **驱动程序**:JDBC驱动程序是Java代码,它实现了JDBC API,并与特定的数据库通信。根据实现方式,JDBC...
总结:JDBC是Java开发数据库应用的基础,通过学习JDBC,开发者可以掌握如何在Java程序中执行SQL语句,处理数据库连接和事务,以及进行性能优化和安全实践。JDBC教程PPT将深入讲解这些概念,提供实用示例,帮助你快速...
本教程涵盖了从基础到高级的JDBC概念,通过丰富的示例代码帮助读者实现理论与实践的结合。 首先,教程会介绍JDBC的基本概念,包括驱动程序类型、JDBC URL结构、以及如何加载和注册JDBC驱动。开发者将学习如何使用`...
总结,JDBC是Java开发中的基础工具,通过理解和掌握其核心概念和最佳实践,开发者可以更高效、安全地实现数据库操作。本教程详细阐述了JDBC的各个方面,包括API、连接步骤、事务管理以及优化策略,旨在帮助学习者...
**JDBC基础教程** Java Database Connectivity (JDBC) 是Java编程语言中用于访问数据库的标准接口。它是Java平台的一部分,允许应用程序与各种类型的数据库进行交互。本教程将深入讲解JDBC的基础知识,帮助初学者...
7. **JDBC基础教程之驱动** - 驱动管理数据库连接,根据不同的数据库产品,需要加载对应的JDBC驱动。JDBC 4.0以后,驱动可以通过服务发现自动加载,无需显式调用`Class.forName()`。 8. **JDBC基础教程之ResultSet...
- **第1章:JDBC基础** - JDBC简介 - 安装配置指南 - 第一个JDBC程序 - 连接数据库 - 执行SQL语句 - **第2章:JDBC核心API** - DriverManager类详解 - Connection接口解析 - Statement接口介绍 - ResultSet...
文件`JDBC基础教程之PreparedStatement 软件 天极Yesky.htm`中会详细讲解如何使用。 5. **CallableStatement对象** 当需要调用数据库中的存储过程时,会使用`CallableStatement`。这个接口扩展了`...
一、JDBC基础 1. JDBC驱动管理:在Java程序中,我们需要加载对应的JDBC驱动来建立与Oracle数据库的连接。Oracle提供了四种类型的JDBC驱动,从早期的JDBC-ODBC桥接驱动到现代的 thin 驱动,每种都有其特定的应用场景...
### JDBC视频教程(15天)知识点概览 #### 一、JDBC简介与环境搭建 - **JDBC概述**: - JDBC(Java Database Connectivity)是Java中用来对关系数据库进行访问的一种标准API。 - JDBC定义了一组用于执行SQL语句的...
JDBC基础** - **JDBC驱动类型**:JDBC驱动分为四种类型,分别是JDBC-ODBC桥接驱动、本地API驱动、网络纯Java驱动和Java数据库连接(JDBC-4.0)驱动。每种驱动有其适用场景和优缺点。 - **数据库连接**:使用`...
JDBC基础知识 - **JDBC驱动类型**:JDBC驱动分为四种类型,分别是Type 1、Type 2、Type 3 和 Type 4。Type 1 驱动基于纯Java实现,依赖于数据库厂商的本地API;Type 2 驱动部分依赖本地库;Type 3 驱动通过中间件...
- JDBC是一个低级API,它直接与SQL命令交互,提供了基础的数据库操作功能。同时,它也是构建更高级API的基础,比如ORM(对象关系映射)框架,如Hibernate和MyBatis。 - 高级API通常提供更友好的接口,简化开发者的...
MySQL JDBC 连接驱动类是Java程序连接MySQL数据库的关键...总之,MySQL JDBC连接驱动类是Java连接MySQL数据库的基础,通过合理的编程实践和对JDBC API的深入理解,可以有效地进行数据库操作并构建高效的数据驱动应用。
Java数据库连接(JDBC)技术是Java开发者用于与各种数据库交互的标准API。JDBC允许程序员用Java...理解这些基础知识对于任何Java开发者来说都是至关重要的,特别是在进行Java Web开发时,JDBC是与数据库交互的基础工具。