`
qu_xiangjun805
  • 浏览: 20716 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

请您先登录,才能继续操作

JDBCTM 指南:入门3 - DriverManager

阅读更多
JDBCTM 指南:入门3 - DriverManager

--------------------------------------------------------------------------------

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");
 
分享到:
评论

相关推荐

    环境流体力学:河流流动模拟.zip

    光电材料仿真,电子仿真等;从入门到精通教程;含代码案例解析。

    C#实现Stewart六自由度平台反解算法及其应用

    内容概要:本文详细介绍了如何使用C#实现Stewart六自由度平台的逆解算法。首先定义了平台的基本结构,包括上下平台的半径、安装角度以及舵机零位偏移等参数。接着,通过欧拉角转换为旋转矩阵的方式实现了姿态转换,并在此基础上计算各个支腿的长度。文中还特别强调了一些常见的陷阱,如角度单位一致性、安装方向匹配、零位校准和数值稳定性等问题。此外,提供了具体的测试用例用于验证算法的正确性和性能。 适合人群:具有一定C#编程基础并对机械臂控制、飞行模拟器或手术机器人等领域感兴趣的开发者和技术人员。 使用场景及目标:适用于需要精确控制六自由度平台的应用场合,如飞行模拟器、手术机器人等。主要目的是通过数学模型将平台的姿态转换为具体的操作指令,从而实现精准定位与操控。 其他说明:文中不仅给出了完整的代码实现,还分享了许多实践经验,帮助读者更好地理解和应用该算法。同时提醒开发者在实际项目中需要注意的一些关键点,如行程限制检查、运动学奇异性检测等。

    夸克网盘批量处理助手,同步更新保存分享链接文件,增量更新文件,批量重命名文件夹,文件名称关键词替换

    夸克网盘批量处理助手,同步更新保存分享链接文件,增量更新文件,批量重命名文件夹,文件名称关键词替换

    XML.md

    XML.md

    MATLAB实现光纤光栅均匀与非均匀应变仿真及其在光学传感的应用

    内容概要:本文详细介绍了利用MATLAB进行光纤光栅的均匀应变和非均匀应变仿真的方法。文中提供了具体的代码实例,解释了如何通过调整光栅的基本参数如中心波长、光栅长度、有效折射率等,以及引入应变系数和应变分布函数,分别计算均匀应变和非均匀应变下光纤光栅的反射率,并展示了相应的反射率曲线图。此外,还讨论了这两种应变模式对光栅反射谱的不同影响,强调了非均匀应变可能导致的光谱畸变现象。 适用人群:对光纤光栅仿真感兴趣的研究人员和技术爱好者,尤其是那些希望通过MATLAB进行光器件设计和测试的人群。 使用场景及目标:①用于科研项目中光纤光栅特性的研究;②辅助工程师在实际工程项目中评估光纤光栅传感器的表现;③帮助学生理解光纤光栅的工作机制和应变对其性能的影响。 其他说明:文章不仅提供了详细的代码实现步骤,还分享了一些调试技巧和注意事项,有助于读者更好地理解和应用所介绍的技术。

    计算机网络基于b站的学习笔记

    计算机网络概念,计算机网络,互联网,互连网的区别;计算机网络的组成、功能;三种交换技术;计算机网络的性能指标;以及计算机网络的分类

    基于Simulink的ABS仿真模型及其PID控制策略的应用与优化

    内容概要:本文详细介绍了如何使用Simulink搭建防抱死制动系统(ABS)的仿真模型,并应用PID控制策略进行仿真分析。首先,文章解释了ABS系统的重要性和工作原理,然后逐步讲解了如何在Simulink中构建车轮动力学模块、制动压力模块等关键组件。接下来,文章深入探讨了PID控制策略的具体实现方法,包括PID参数的选择和调整技巧。通过多次仿真实验,展示了不同PID参数对ABS系统性能的影响,并提出了优化方案,如变增益策略和积分分离策略。最后,文章分享了一些实用的经验和技巧,如处理低速时的数值稳定性、应对路面突变等情况。 适合人群:对汽车工程、控制系统设计感兴趣的工程师和技术爱好者,尤其是那些希望深入了解ABS系统和PID控制策略的人群。 使用场景及目标:适用于希望在虚拟环境中研究和优化ABS系统性能的研究人员和工程师。主要目标是提高ABS系统的制动性能和安全性,确保在各种工况下都能保持最佳的制动效果。 其他说明:文中不仅提供了理论知识,还包括了大量的实际案例和代码片段,帮助读者更好地理解和应用所学内容。此外,作者还分享了许多实践经验,如如何处理仿真中的常见问题和优化策略。

    独子棋demo.rar

    独子棋demo.rar

    基于Maxwell-Simplorer的永磁同步电机SVPWM控制联合仿真研究

    内容概要:本文详细介绍了如何利用Maxwell和Simplorer进行矢量联合仿真,结合SVPWM(空间矢量脉宽调制)算法实现对永磁同步电机的精确控制。文章首先解释了SVPWM的基本原理及其Python实现,接着阐述了在Maxwell中建立电机模型并设置参数的具体步骤,以及在Simplorer中搭建控制系统的方法。文中还讨论了仿真过程中如何调整控制器参数以优化系统性能,并展示了如何通过分析仿真结果来评估控制效果。此外,文章探讨了将该方法应用于其他类型电机的可能性,如感应电机和开关磁阻电机。 适合人群:从事电机控制领域的研究人员和技术人员,尤其是对永磁同步电机和SVPWM算法感兴趣的读者。 使用场景及目标:适用于需要深入了解永磁同步电机控制原理的研究人员,帮助他们掌握Maxwell和Simplorer联合仿真的具体操作流程,提高对电机控制系统的理解和优化能力。 其他说明:文章不仅提供了详细的理论讲解,还附有大量代码片段和实践经验,有助于读者更好地理解和应用相关技术。同时,文章强调了实践中可能遇到的问题及解决方法,使读者能够在实际工作中避免常见错误。

    【太阳能电池片图像处理】基于边缘检测与频域滤波的预处理系统设计:图像倾斜校正及栅格去除(论文复现或解答,含详细代码及解释)

    内容概要:本文详细介绍了太阳能电池片在线颜色分选系统的图像预处理方法。针对采集的原始图像中存在的传送带背景和随机倾斜等问题,提出了完整的预处理流程。主要包括:倾斜校正(通过边缘检测和霍夫变换)、去除栅格干扰(频域滤波和形态学操作),以及对多种边缘检测算子(如Roberts、Sobel、Prewitt、Canny和LOG)的比较与分析。此外,还探讨了不同直线检测方法(如Radon变换、Hough变换及其改进版本)的应用,并优化了整个预处理流程,确保后续的颜色特征提取和分类准确性。 适用人群:从事计算机视觉、图像处理领域的研究人员和技术人员,特别是专注于工业自动化检测设备开发的工程师。 使用场景及目标:①实现太阳能电池片图像的倾斜校正,确保图像水平放置;②有效去除电池片表面栅线对颜色分析的影响;③为后续的颜色特征提取和分类提供高质量的输入数据;④比较不同边缘检测算子的效果,选择最适合特定任务的算子;⑤评估各种直线检测方法的性能,选择最优方案应用于实际生产环境中。 其他说明:文中不仅提供了详细的理论解释,还给出了具体的Python代码实现,帮助读者更好地理解和实践相关技术。同时,针对实际应用中的常见问题,如参数调优、光照一致性和异常处理等方面也给出了相应的建议。最后,通过一系列实验验证了所提方法的有效性,并提出了一些性能优化的方向。

    Comsol锂离子电池仿真:电化学-热耦合模型与多物理场分析助力电池热管理

    内容概要:本文详细介绍了利用Comsol进行锂离子电池仿真的技术和应用,特别是在电化学-热耦合模型和多物理场分析方面。文章首先阐述了电化学-热耦合模型在充放电循环中的应用,通过MATLAB伪代码展示了如何定义电池几何形状、材料属性、边界条件以及耦合电化学和热传递过程。接下来讨论了液冷仿真与电池热管理模型,通过Python伪代码解释了液冷通道的构建、流体属性的设置及其流动与热传递的求解。此外,文章还比较了锂电池产热模型下风冷和液冷的不同效果,并强调了产热计算的重要性。最后,文章分享了一些实用的经验和技术细节,如处理高倍率充电时的浓度极化、选择合适的湍流模型、刀片电池的建模技巧等。 适合人群:从事锂离子电池研究和开发的科研人员、工程师及相关领域的学生。 使用场景及目标:①理解和优化锂离子电池的热管理机制;②评估不同冷却方式(如风冷、液冷)的效果;③提高电池系统的性能和安全性。 其他说明:文中不仅提供了详细的理论背景和技术实现步骤,还分享了许多实践经验,有助于读者更好地掌握Comsol在锂离子电池仿真中的应用。

    智能驾驶领域AEB系统的安全距离与TTC切换优化算法及其应用场景

    内容概要:本文探讨了自动紧急制动系统(AEB)中安全距离与时间头时距(TTC)的优化方法。首先介绍了AEB系统的基本原理,包括安全距离和TTC的定义及计算方式。接着提出了基于机器学习的动态调整机制,通过分析历史驾驶数据,训练回归模型预测最优安全距离,并设计了基于规则的智能切换机制,根据车速选择合适的评估标准。此外,通过仿真测试验证了改进算法的有效性,展示了其在低速跟车、高速变道等场景中的优越表现。最后,讨论了联合仿真中的挑战,如多物理场耦合与时序同步问题,并提供了相应的解决方案。 适合人群:从事智能驾驶技术研发的专业人士,尤其是对AEB系统有研究兴趣的工程师和技术爱好者。 使用场景及目标:适用于希望深入了解AEB系统工作原理及优化方法的研发团队。目标是通过改进现有算法,提高AEB系统在各种驾驶场景下的鲁棒性和安全性。 其他说明:文中提到的技术细节和代码片段有助于读者更好地理解和实现相关算法。同时指出了现有研究存在的局限性,为进一步探索提供了方向。

    数据结构.md

    数据结构.md

    格式化输出.md

    格式化输出.md

    三相不平衡电网下模块化多电平变流器(MMC)的先进控制策略及其实现

    内容概要:本文详细探讨了在三相不平衡电网条件下,模块化多电平变流器(MMC)的多种控制策略及其具体实现方法。主要内容包括:利用双二阶广义积分器(DSOGI)进行正负序分离控制,通过PI控制器实现零负环流抑制,以及采用谐振控制器抑制二倍频功率波动。此外,文中还介绍了不同控制模式之间的动态切换逻辑,确保系统在各种工况下的稳定性和高效性。文章提供了详细的MATLAB、Python和Verilog代码片段,展示了各个控制环节的具体实现。 适合人群:从事电力电子、电力系统自动化领域的研究人员和技术人员,尤其是对MMC控制策略感兴趣的工程师。 使用场景及目标:适用于需要解决三相不平衡电网问题的研究项目和工业应用场景。主要目标是在电压跌落等恶劣工况下,确保MMC系统的稳定性和平滑运行,提高系统的鲁棒性和效率。 其他说明:文中引用了多篇相关领域的权威文献,为读者提供了进一步深入研究的方向。同时,作者强调了理论仿真与实际调试之间的差距,提醒读者在实验过程中需要注意的安全事项。

    Python编程与PyQt GUI应用开发

    本书是关于Python编程语言和使用PyQt框架开发图形用户界面(GUI)应用的全面指南。首先介绍了Python的基础知识,包括安装、与Python交互、编写第一个程序、数据类型、基本元素、注释、续行和打印等。随后,深入探讨了Python的算术运算、位运算、复数、决策、逻辑运算符、循环等核心概念。接着,书中详细讲解了序列(包括字符串、列表、元组和集合)、函数和模块、类(包括类声明、方法、继承、垃圾回收、运算符重载和描述符)、文件处理以及异常处理。最后,作者重点介绍了PyQt框架,包括安装、窗口和对话框的创建、使用代码和Qt Designer创建GUI应用程序、基础控件、事件处理、高级控件(如LCD时钟、日历、组合框、表格、Web页面和图形显示)、菜单和工具栏的使用。本书适合希望学习Python编程和GUI开发的读者。

    espidf启动流程基于esp32c3

    espidf启动流程

    煤矿瓦斯气驱技术中二氧化碳与氮气应用的Python自动化解决方案

    内容概要:本文详细介绍了利用Python进行煤矿瓦斯气驱过程中二氧化碳和氮气的应用方法和技术细节。首先展示了如何通过Python脚本处理气驱压力监测数据并绘制对比图,接着讲解了注气速率控制的PID算法实现及其注意事项。文中还涉及裂隙气体扩散模拟、湿度对氮气驱替的影响以及基于状态机的注气控制系统设计。此外,提供了实时气体浓度监控、数据滤波、阈值报警等功能的具体实现方式,并强调了数据可视化的应用价值。最后讨论了注气孔布置优化和注气压力控制的实际操作要点。 适合人群:从事煤矿开采及相关领域的技术人员、工程师,尤其是具有一定编程基础并对自动化控制感兴趣的从业者。 使用场景及目标:适用于煤矿瓦斯气驱项目的规划、实施与维护阶段,旨在提高瓦斯抽采效率,确保安全生产,同时减少人为因素导致的操作失误。通过学习本文提供的代码示例和技术方案,读者能够掌握如何运用Python解决实际工程问题的方法。 其他说明:文中提到的所有代码均为简化版本,用于解释相关概念和技术原理,在实际项目中可能需要进一步完善和优化。对于希望深入了解该领域的读者而言,本文不仅提供了实用的技术指导,也为后续研究奠定了良好的基础。

    CAML官方作者的版本有很多bug、模型无法下载,并且没做做优化等问题,所以基本上大多数人是无法使用的 而此资源代码,是本人包括在源代码理解上咨询原作者、不断调试试验等进行代码层开发改造的成果

    CAML(Context-Aware Meta-Learning)是一种基于元学习的少样本学习算法。CAML通过引入上下文感知的机制,实现小样本图像的识别分类。基本上是n-way k-shot的最佳效果模型。 此资源为源码包,是本人在攻克小样本学习问题上,花了一个月进行改进与分析后的代码,安装环境后,可以直接运行caml_infer_main.py。 参考关联文章:https://blog.csdn.net/A15216110998/article/details/144600715?spm=1011.2415.3001.5331 1.实现输入单张图片进行推理,输出类别和概率。 2.模型下载通过本地文件进行加载,内带有模型文件下载链接。 3.不再随机抽样,启动时加载指定的支持集,运行时输入一张图片作为查询集。 4.可任意指定支持集的位置、任意指定模型所在的位置。 5.样本特征编码部分和逻辑修改,源码bug修改。

Global site tag (gtag.js) - Google Analytics