- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究 Java JDBC API,并且了解到数据库应用程序的第一步当然是获取与 DBMS 的连接。现在,我知道 DriverManager 是包中为数不多的(迄今为止我遇到的唯一类)具体类之一,它有一个私有(private)构造函数和静态方法(这意味着我无法实例化它,即使我想要)。因此,DriverManager 类(在 JDBC 4.0 之后)会自动加载供应商驱动程序中包含的 Driver 接口(interface)实现(而不是手动调用 Class.forName("blahblah") 来加载该类),并且实现类本身在他们按照这些思路做了一些事情:
static {
Driver driver=new cfully.qualified.name.DriverClass();
DriverManager.registerDriver(driver);
}
这会在 DriverManager 中注册 Driver 实现(如果有),而 DriverManager 又能够将数据库的 URL 传递给所有已注册的驱动程序,以便获取 Connection 对象。现在,我不明白...... DriverManager 类如何存储(或注册)驱动程序?这些是实现 java.sql.Driver 的类的实例,它们是对象,所以我期望 DriverManager 的实例来存储(例如,在数组或某些数据结构中)注册的驱动程序...但没有据我所知(我正在调用静态方法!)。有人可以解释一下吗?
最佳答案
这就是它的作用
public static synchronized void registerDriver(java.sql.Driver driver)
throws SQLException {
if (!initialized) {
initialize();
}
DriverInfo di = new DriverInfo();
di.driver = driver;
di.driverClass = driver.getClass();
di.driverClassName = di.driverClass.getName();
// Not Required -- drivers.addElement(di);
writeDrivers.addElement(di);
println("registerDriver: " + di);
/* update the read copy of drivers vector */
readDrivers = (java.util.Vector) writeDrivers.clone();
}
因此它会在中注册驱动程序、类和驱动程序的类名
private static java.util.Vector readDrivers = new java.util.Vector();
然后当有人getConnection(String url.....)
它将循环尝试此操作的readDrivers
中的所有驱动程序
Connection result = di.driver.connect(url, info);
if (result != null) {
return (result);
}
因此,由实现 java.sql.Driver 的人来快速决定他是否能够连接到提供的 url
关于java - DriverManager.registerDriver() 静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33190198/
调用oracle函数时DriverManager.getConnection与DriverManager.registerDriver()有什么区别? 我经常只使用DriverManager.getC
我想对这段代码进行单元测试,以验证调用了哪个 DriverManager.getConnection() 。DriverManager.getConnection(url,user,pass) 或 D
Apache Tomcat 6.0.35 hibernate 问题 com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@352e71c4
我正在尝试为调用 DriverManager.getConnection() 的方法编写单元测试。我正在使用 PowerMock 1.5 和 easymock。不知何故,Powermock 无法模拟
最近,我们在Hive连接中添加了SSL。我们通过添加 ssl=1;sslTrustStore=C:\\keytabs\\keys.truststore;trustStorePassword=foo 到
我有以下代码来测试新服务器上访问数据库的链接,一切都适用于现有服务器,并且我能够访问该文件夹。 !if.exists 返回 true,我可以使用 Runtime.getRuntime().exec("
我有一个应用程序,其目的是支持 jdbc:hive:// 和 jdbc:hive2:// 协议(protocol)的 JDBC 连接。以下代码加载这两种协议(protocol)相应的 JDBC 驱动程
尝试连接到我的 Oracle 11.1.0.7.0 时数据库使用 jdbc 和 ojdbc6.jar在匹配版本中,我发现了两个变体。 假设一个字符串 DBURL 形式的 jdbc:oracle:thi
我一直在尝试检测 getconnection 方法以获取在 JDBC 连接建立期间传递的 DB_URL。据我所知,DriverManager 的检测工作正常,因为注入(inject)部分工作正常而不会
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在使用 Java 和 mysql 作为数据库,但遇到了一个奇怪的问题:我的一位客户的连接非常不稳定,有时丢包率可能很高。好吧,我知道这不是软件的错误,但我去那里进行了测试,当程序调用“Driver
我正在开发一个 Java 应用程序,该应用程序可以连接到我的办公室网络,也可以不连接到我的办公室网络。 我的问题是,当用户未连接时,DriverManager.getConnection() 需要长达
我们在找出与 DriverManager 建立连接时收到错误消息的原因时遇到了一些麻烦。 这是我们的代码 package Databank; import java.sql.Connection; i
我有一个类,它连接到 H2 数据库并运行多个 SQL 语句。 public class H2Persistence implements IPersistence { private Conn
我正在尝试将 Java 程序连接到本地主机中的数据库。我的问题看起来很简单,但我找不到任何答案。 当我尝试编译时,出现以下错误: DriverManager.getConnection cannot
我正在尝试使用标准 JDBC 方式连接到数据库 connection = DriverManager.getConnection(url, username, password); 是否有连接超时的最
这个问题在这里已经有了答案: Connect Java to a MySQL database (14 个答案) 关闭 8 年前。 我正在尝试使用一个 Java 类,它在过去对我来说已经非常有用,以
我正在编写一些 gradle 插件,现在我遇到了 DriverManager 没有看到 buildscript 依赖项中定义的 JDBC 驱动程序的问题: 我有下一个 build.gradle 文件:
我正在编写一些 gradle 插件,现在我遇到了 DriverManager 没有看到 buildscript 依赖项中定义的 JDBC 驱动程序的问题: 我有下一个 build.gradle 文件:
我正在使用 jruby,并通过 db2jcc4.jar 文件调用 DB2/BIGSQL 数据库。我在插入和选择方面都建立了完美的连接,然后突然间我开始收到错误“未初始化的常量 DriverManage
我是一名优秀的程序员,十分优秀!