【发布时间】:2020-05-06 14:28:30
【问题描述】:
我正在尝试连接到托管在 ESXI 服务器上的现有数据库,但我似乎无法正确找到驱动程序。
我使用的代码如下:
new ConnectToDb('jdbc:sqlserver:sqltest3:CI-ESXI', 'USER', 'PASSWORD', 'com.microsoft.sqlserver.jdbc.SQLServerDriver')
ConnectToDb(String url, String user, String password, String driver) {
Class.forName(driver)
database = groovy.sql.Sql.newInstance(url, user, password, driver)
}
我收到以下错误:
线程“main”java.sql.SQLException 中的异常:没有合适的驱动程序 找到 jdbc:sqlserver:sqltest3:CI-ESXI
另外,我尝试了以下,java风格,代码:
void connect(String url, String user, String password, String driver) throws SQLException {
if (null == stmt || stmt.isClosed()) {
// Create a connection to the database
if (database_url == null) {
throw new SQLException("Cannot connect to database, connection URL is null.")
}
Properties database_infos = new Properties()
database_infos.put("user", user)
database_infos.put("password", password)
database_infos.put("driver", driver)
Class.forName(driver)
connection = DriverManager.getConnection(url, database_infos)
stmt = connection.createStatement()
}
}
返回相同的异常。
其实直接调用DriverManager.getDriver(driver)会返回同样的异常。
驱动添加到POM.xml文件中的方式如下:
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>7.4.1.jre8</version>
</dependency>
它被添加到类路径中,我可以通过以下方式将其导入任何java文件import com.microsoft.sqlserver.jdbc.SQLServerDriver而不会出错
我在 Groovy 项目中使用 IntelliJ IDEA,但我可以在纯 Java 项目中重现 Eclipse 中的错误。所以它似乎不是基于语言/IDE的。
所以现在我对此有点不知所措,有什么想法吗?
【问题讨论】:
-
它在运行时在你的类路径中吗?
-
好吧,我相信是的,如果你问这个问题,我认为导入工作的事实并不能保证它在运行时位于类路径中。我该如何验证?这不就是 Class.forname(driver) 调用的作用吗?
-
导入语句在编译时解析(java 编译器,
javac)。您是在 IDE 内部还是外部看到这些错误消息? -
JDBC 驱动程序与 SQL Server Management Studio 无关。
-
为什么您认为
jdbc:sqlserver:sqltest3:CI-ESXI是 Microsoft SQL Server JDBC 驱动程序的有效 JDBC url?它与its documentation 中的 URL 语法不匹配。
标签: java sql-server jdbc groovy database-connection