当前位置: 首页 > 面试题库 >

驱动程序类如何位于JDBC4中

徐丰茂
2023-03-14
问题内容

JDBC版本4的一项重大新增功能您不必再通过调用来显式加载驱动程序Class.forName。当您的应用程序首次尝试连接数据库时,将DriverManager自动加载在应用程序中找到的驱动程序CLASSPATH

我的问题是? 如果类路径中有多个驱动程序怎么办?

我可以猜测的一件事是,在解析连接URL时,可以算出所需的驱动程序是JDBC还是ODBC,但是如何从多个与jdbc兼容的驱动程序中说出要为我正在使用的数据库选择哪个呢?(可以说我正在使用MySql,并且需要MySql-
Connector驱动程序)。JVM中是否有此类数据库驱动程序的静态映射?


问题答案:

有关JDBC4驱动程序加载的一些信息来自:http ://www.onjava.com/2006/08/02/jjdbc-4-enhancements-in-java-
se-6.html

调用方法getConnection时,DriverManager将尝试从初始化时加载的JDBC驱动程序和使用与当前应用程序相同的类加载器显式加载的JDBC驱动程序中查找合适的驱动程序。

对DriverManager方法getConnection和getDrivers进行了增强,以支持Java
SE服务提供程序机制(SPM)。根据SPM,服务被定义为一组众所周知的接口和抽象类,而服务提供者是该服务的特定实现。它还指定服务提供者配置文件存储在META-
INF / services目录中。JDBC 4.0驱动程序必须包含文件META-INF / services /
java.sql.Driver。该文件包含JDBC驱动程序的java.sql.Driver实现的名称。例如,要加载JDBC驱动程序以连接到Apache
Derby数据库,META-INF / services / java.sql.Driver文件将包含以下条目:

org.apache.derby.jdbc.EmbeddedDriver

现在来问你的问题。

我的问题是?如果类路径中有多个驱动程序怎么办?

作为类加载器规则,将首先加载找到的所有类,如果该类已经加载,则不会由类加载器重新加载。



 类似资料:
  • 我想单击webmail应用程序中的search auto complete。

  • 我无法在这两个文件中找到WebLogic CLASSPATH变量-nv.sh和comEnv.cmd.我不知道在哪里添加sqljdbc42,也不知道如何连接到AzureSQL服务器数据库(这甚至可能吗)? 我下载了sqljdbc42。jar,并将其添加到我的$DOMAIN/lib中,但类路径在哪里;我没有看到要修改的。据我所知,我需要添加JAR的路径。 C:\Oracle\中间件\Oracle_Ho

  • 当我将mysql jdbc驱动程序复制到JDK的\jre\lib\ext时,它执行得非常好。现在,我想通过指定环境变量的类路径来使用jdbc。但是,这样做之后,我的程序抛出异常: “java.sql.SQLException:找不到适合jdbc的驱动程序:mysql://localhost/books" 如何设置类路径?

  • 主要内容:JDBC驱动程序是什么?,JDBC驱动程序类型,应该使用哪个驱动程序?JDBC驱动程序是什么? JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器进行交互。 例如,使用JDBC驱动程序,可以通过发送SQL或数据库命令,然后使用Java接收结果来打开数据库连接并与数据库进行交互。 JDK附带的包包含各种类,其类的行为被定义,实现在第三方驱动程序中完成。 第三方供应商在其数据库驱动程序中实现接口。 JDBC驱动程序类型 JDBC驱动程序实现因Java

  • 问题内容: 我需要测试与数据库的JDBC连接。执行此操作的Java代码应该很简单: 驱动程序管理器将为给定的连接URL查找合适的驱动程序。但是我需要能够在运行时加载JDBC驱动程序(jar)。即我在运行上面代码片段的Java应用程序的类路径上没有JDBC驱动程序。 因此,我可以使用以下代码加载驱动程序: 但是,由于我无法告诉它使用哪个类加载器,驱动程序管理器仍然不会选择它。我尝试设置当前线程的上下

  • 我正在处理Spring Boot项目,突然遇到应用程序无法加载MySQL jdbc的问题。(我编译了一次这个项目,没有改变任何东西) 这是我的pom.xml: 这是我的application.properties: Logcat: MySQL数据库最初是使用hibernate创建的。这些配置工作正常,但我不确定这里的真正问题是什么 编辑:我删除了。m2文件夹并从一开始安装所有依赖项。