`
JAVA海洋
  • 浏览: 600368 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

JDBC 概述(三)

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

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

相关推荐

    JDBC概述讲解.........

    JDBC概述讲解 JDBC概述讲解 JDBC概述讲解 JDBC概述讲解 JDBC概述讲解

    jdbc概述

    本教程含盖了jbdc框架的主要内容。 本用实力介绍如何使用jdbc。 文档问word格式

    Java-JDBC【源码】JDBC概述、获取连接、SQL注入问题与解决、查询解析

    Java-JDBC【之】JDBC概述、获取连接、SQL注入问题与解决、查询解析 1.JDBC概述 2.操作流程 1.初始化项目,导入`驱动jar包` 2.加载驱动类 3.创建数据库连接对象`Connection` 4.创建`Statement` (此处存在SQL注入问题)...

    JDBC概述通过案例介绍数据库应用开发的过程

    JDBC 概述 JDBC主要接口 通过案例介绍数据库应用开发的过程 数据库连接池的配置和使用

    Java__JDBC概述和连接.mp4

    Java__JDBC概述和连接.mp4

    JDBC概述+快速入门+API详解+数据库连接池

    JDBC概述+快速入门+API详解+数据库连接池

    JDBC课件 概述与使用

    一、JDBC概述 二、JDBC连接数据库 三、使用SQL语句操作数据库 四、处理结果集

    Java中JDBC概述的资料,帮助初学者掌握何为JDBC

    回答:使用JDBC访问数据库 1、什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。 原来我们操作数据库是在控制台使用SQL语句来操作数据库 JDBC是用Java语言向...

    2.JDBC概述.zip

    JDBC的资料,帮助初学者了解有关JDBC的知识

    01_传智播客JDBC_jdbc的理论概述.rar

    01_传智播客JDBC_jdbc的理论概述讲的很好啊!

    JDBC概述J、DBC应用步骤

    JDBC是一套协议,是JAVA开发人员和数据库厂商达成的协议,也就是由Sun定义一组接口,由数据库厂商来实现,并规定了JAVA开发人员访问数据库所使用的方法的掉用规范。

    01_传智播客JDBC_jdbc的理论概述

    01_传智播客JDBC_jdbc的理论概述

    J2EE体系统一,关于JDBC

    、JDBC概述:sun公司的一个商标,用其命名java访问数据库的技术 JDBC历史: 互联网的兴起,导致电子商务的产生,而电子商务的数据存放于数据库,Java为了能够更有效的支持电子商务,推出JDBC JDBC的设计原理:...

    超详细jdbc教程

    很详细的JDBC教程 主要章节: 一、JDBC概述 二、JDBC连接数据库 三、使用SQL语句操作数据库 四、处理结果集

    JDBC的概述及入门案例,API详解

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。

    JDBC教程

    JDBC全面概述 能对JDBC有具体的了解

    JDBC概述及其常用类和接口

    概述 JDBC是一种可用于执行SQL语句的Java API(应用程序接口),是连接数据库和Java应用程序的纽带 JDBC-ODBC桥 JDBC-ODBC桥是一个JDBC驱动程序,完成了从JDBC操作到ODBC操作之间的转换工作,允许JDBC驱动程序被用作...

    Java数据库接口JDBC介绍

    第1章 JDBC概述 2 1.1 JDBC用途 2 第2章 主要调用对象接口介绍 2 2.1 connection对象 2 2.1.1 DriverManager.getConnection方法 3 2.1.2 URL说明 3 2.1.3 JDBC URL 3 2.1.4 odbc子协议 4 2.1.5 发送 5 2.1.6 事务...

    jdbc笔记(自写)

    Day1–JDBC概述+JDBC完成CRUD+DAO设计 1.JDBC概述 1.1 什么是持久化(persistence): 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。 ​ 保存数据: ​ 内存中: 掉电之后,数据就没了. ​ 磁盘...

Global site tag (gtag.js) - Google Analytics