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

Jdbc系列二:Driver接口 一、JDBC API  JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果。 二、Driver 接口  Java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。  在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.... 阅读详情

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");

JDBC系列(二):JDBC代码的编写步骤 JDBC系列(二):JDBC代码的编写步骤 JDBC代表一组公共的接口。 JDBC中的这些公共接口和DBMS厂商提供的实现类(jar包),是为了实现java代码可以连接DBMS,并且操作其中的数据。 1. 常用的接口: Connection: 连接 Statement 和 PrepareStatement :增、删、改、查 ResultSet: 接收和处理查询结果 2.辅助的类: DriverManager: 驱动管理类 3.JDBC程序的编写步骤: 注册驱动 (如果缺少此 阅读详情

相关推荐

Java中的DriverManager简介及示例

例如,如果我们使用MySQL数据库,我们需要使用com.mysql.jdbc.Driver类来注册MySQL驱动程序。在上面的示例代码中,我们使用DriverManager.getConnection()方法来建立与MySQL数据库的连接。在上面的示例代码中,我们使用Connection对象创建一个Statement对象,并使用它执行SQL查询。一旦我们建立了与数据库的连接,就可以执行各种SQL查询和更新操作。一旦我们成功注册了数据库驱动程序,我们就可以使用DriverManager来建立与数据库的连接。

CyberWizarDD的博客 616

JDBC API详解——DriverManager

JDBC API详解——DriverManager(驱动管理类) 1、注册驱动 Class.forName(“com.mysql.cj.jdbc.Driver”); MYSQL5之后的驱动包可以省略注册驱动的步骤,因为会自动加载jar包中META-INF/services/java.sql.Driver文件中的驱动类 2、获取数据库连接 Connection conn = DriverManager.getConnection(url,username,password); (1)url:连接路径 语法:j

weixin_45348240的博客 4400

JDBC Oracle 驱动程序实战教程

JDBC(Java Database Connectivity)是一个Java API,它定义了客户端如何连接到数据库、执行SQL语句、检索结果等操作。它为Java程序员提供了一个标准的数据库交互接口,可以访问各种类型的数据源。JDBC驱动是Java数据库连接(Java Database Connectivity)的实现,它提供了Java应用程序与数据库之间的标准接口。通过这个接口,Java程序能够使用标准的SQL语句执行各种数据库操作。JDBC驱动的作用可以概括为以下几个方面:数据库连接管理。

weixin_28840811的博客 1035

DriverManager.getConnection

DriverManager.getConnection DriverManager.getConnection一共有四个重载方法,前三个由public修饰,用来获取不同类型的参数,getConnection实际相当于一个入口,最终都会return第四个私有化的getConnection方法。 参考:https://www.cnblogs.com/yachao1120/p/8669292.html ...

Alittlevegetable的博客 1万+

DriverManager 驱动加载管理程序

一个自己写的工具程序,包含驱动开发过程中所需的几种常用功能:1、驱动加卸载。2、内核IDT、GDT、符号链信息查看。3、物理内存浏览。4、掩码计算。

ESP-IDF 5.4下esp32-camera组件编译报错?手把手教你解决头文件缺失问题

本文详细解析了ESP-IDF 5.4环境下esp32-camera组件编译时出现的头文件缺失问题,提供了从目录结构优化、CMake配置到VSCode智能感知设置的完整解决方案。针对第三方组件集成难题,文章特别强调了PRIV_REQUIRES依赖声明和路径配置的关键作用,帮助开发者高效解决编译错误并建立稳定的开发环境。

weixin_28829629的博客 309

【Java 进阶篇】JDBC DriverManager 详解

是 Java JDBC API 的一部分,是用于管理数据库驱动程序的类。它的主要功能包括:注册数据库驱动程序:在使用 JDBC 连接数据库之前,必须先注册适用于您的数据库的驱动程序。负责加载和注册这些驱动程序。允许您创建到数据库的连接,这是执行 SQL 操作的第一步。管理数据库连接池:连接池是一组预先创建的数据库连接,可以在需要时被重复使用,以提高性能。可以与连接池一起使用。本文详细介绍了 JDBC的用法,包括注册数据库驱动程序、创建数据库连接以及使用连接池管理连接。

繁依Fanyi的博客 4397

嵌入式开发中SAR与ΔΣ ADC选型指南:从原理到实战应用

模数转换器是嵌入式系统连接模拟世界与数字世界的核心接口,其选型直接决定了数据采集的精度与可靠性。SAR ADC采用逐次逼近原理,如同天平称重,通过二进制搜索快速完成转换,具备高速、多通道轮询的优势,适合电机控制、通信等动态场景。ΔΣ ADC则基于过采样与噪声整形技术,以速度换取精度,通过数字滤波输出高分辨率结果,在传感器测量、音频采集等静态高精度领域表现卓越。理解这两种架构的工作原理差异,是进行嵌入式ADC选型的基础。在实际工程中,需结合信号带宽、多通道切换需求、功耗约束及PCB布局能力进行综合权衡。例如,

weixin_30140399的博客 244

Java与MySQL数据库连接的JDBC驱动配置教程

我们在学习数据库和java程序以后我们需要将其连接起来,这时候就需要用到JDBC,通过使用JDBC,Java程序可以轻松地操作各种主流数据库,例如,Oracle,MS SQL Server,MySQL等。由于Java语言本身的跨平台性,所以使用JDBC编写的程序不仅可以实现跨数据库,还具有跨平台性和可移植性。使用JDBC访问数据库具有操作简单,获取方便且安全可靠等优势。所以我们将详细讲解一下JDBC编程。Java 数据库连接(JDBC)是Java应用程序与数据库之间的一种标准的SQL数据库连接协议。

2301_81776550的博客 4075

上机任务一:空气质量指数 (air quality index,AQI是定量描述空气质量状况的指数。为了更好地了解和人们身体健康息息相关的天气状况,本书模拟生成500条某地区天气数据,一行样本对应一天

调整后的R平方为0.4308,考虑了模型中的自由度,它略低于多重R平方,说明模型的解释能力可能有限。总的来说,新的模型相对于之前的模型在AIC值上更优,包含了最高温度(X2)和最低温度(X3)这两个重要的预测因子,并且对AQI的解释能力较好。在表中,Df表示自由度,Sum Sq表示总平方和,Mean Sq表示均方(总平方和除以自由度),F value表示F统计量,Pr(>F)表示对应的p值。在分析这些结果时,需要关注系数的显著性(p值),系数的方向(正向或负向影响),以及系数的大小(估计值)。

Mrrunsen的博客 723

redhawk:STA timing data file解析

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?STA timing data file分为以下几个部分:• Header• Name Map• Footer这部分报告设计的基本信息,例如文件类型,设计名称,分隔符等。...

m0_61544122的博客 1155

【亲测免费】 DBeaver JDBC 驱动整合包使用教程

[DBeaver-Driver-All](https://github.com/moshowgame/dbeaver-driver-all.git) 是一个集合了几乎所有常见数据库JDBC驱动的项目,由Moshow郑锴创建。这个项目的主要目的是方便DBeaver用户在连接各种数据库时,不必每次单独下载所需的JDBC驱动。通过集成此项目,用户可以一站式获取所有驱动,简化数据库管理流程。 ## 2....

gitblog_00985的博客 1653

【华为OD技术面试手撕真题】3、小行星碰撞 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS)

小行星碰撞,本专栏更新每年华为OD机试的高频手撕代码题,每个题目都会使用五种语言进行解答(C & C++& Java & Python & JS),思路分析都非常详细, 实现最低的时间复杂度和高通过率,每个解题思路超过百字,内含各个编程语言的八股文面试题,欢迎大家订阅学习, 代码可以直接运行使用,全网限时最低价,持续更新

KJ.JK 8171

详解JDBC的四种驱动类型

原文地址:http://www.yiidian.com/jdbc/jdbc-connection-driver.html JDBC驱动程序是一个软件组件,JDBC使得Java应用程序可以与数据库进行交互。JDBC驱动程序有4种类型: JDBC-ODBC桥驱动程序 本地API驱动程序(部分是Java驱动程序) 网络协议驱动(完全Java驱动) 本地协议驱动(完全Java驱动程序) 1 JDB...

Java客学习室 4011

QCC305x-QCC304x系列开发教程之应用程序子系统详解 嵌入式

本文对QCC305x-QCC304x系列芯片的应用程序子系统进行了详细解析,并给出了一个LED闪烁的示例代码。嵌入式系统的开发既需要理论知识的支持,也需要实践经验的积累,希望本文能够为读者在QCC305x-QCC304x系列芯片的开发中提供一些有益的指导。QCC305x-QCC304x系列芯片提供了丰富的外设接口,包括UART、SPI、I2C等,开发者可以根据需求选择适合的接口进行数据传输和控制。QCC305x-QCC304x系列芯片的应用程序子系统是整个嵌入式系统的核心部分,负责管理和执行各种应用程序。

CodeMaven的博客 226

PSM倾向性评分分析介绍、spss进行倾向性评分分析示例

PSM倾向性评分分析介绍、spss进行倾向性评分分析示例

statistics+insight+vista+power 1481

JDBC驱动新手教程

一、 URL JDBC的URL=协议名+子协议名+数据源名。 协议名总是“jdbc”。 子协议名由JDBC驱动程序的编写者决定。 数据源名也可能包含用户与口令等信息;这些信息也可单独提供。 二、MySQL 驱动:com.mysql.jdbc.Driver URL:jdbc:mysql://machine_name:port/dbname 注:machine_name:数据库所在的机器的名称; port:端口号,默认3306 三、新旧版本写法对比 1.旧版本,MySQL Connector/J 5.x 版

xianyu9w的博客 2645

SerDes系列之如何选择AC耦合电容

交流耦合电容用于隔离PCB互连时的直流分量(Common-mode voltage),同时传递交流分量(Voltage swing),其作用类似于一个高通滤波器,但是,如果电容容值选取不当,使用过程中会产生信号质量问题,典型的应用场景:当包含相同的长串1或0的NRZ数据应用于该高通滤波器时,会发生低频电压跌落,导致低频模式相关抖动(PDJ)。

一只豌豆象的博客 2351

JDBC详解系列(二)之加载驱动

---[来自我的优快云博客](http://blog.youkuaiyun.com/weixin_37139197/article/details/78848637)---   在JDBC详解系列(一)之流程中,我将数据库的连接分解成了六个步骤。 JDBC流程: 第一步:加载Driver类,注册数据库驱动; 第二步:通过DriverManager,使用url,用户名和密码建立连接(Connect...

124

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: JDBC系列教程(一)---连接
下一篇: JDBC系列教程(三)---语句
天地客人
博客等级 码龄23年 62粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值