我编写了一个 Java 包,它使用 JDBC 和集成安全性连接到 SQL Server 数据库。这个包按照我的 Java IDE 的预期运行。现在我正在尝试使用 IKVM 从一个单独的 .NET 应用程序访问这个包中的一些类。
但是,现在我在 .NET 应用程序中收到 ExceptionInInitializerError,堆栈跟踪显示此错误发生在数据库连接初始化期间。
我为 .NET 应用程序创建了一个 app.config 文件,以使用以下方法将 JDBC 驱动程序添加到 Java 库路径:
<add key="ikvm:java.library.path" value="C:\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\auth\x64"/>
我尝试将 \x64 更改为 \x86(使用 32 位身份验证 dll 而不是 64 位),我收到了完全相同的错误,我认为这很奇怪。然后我从 app.config 中删除了这一行,并收到“无法加载 sqljdbc_auth.dll”警告,并显示“此驱动程序未配置为集成身份验证”。SQLServer 异常。
我将数据库连接代码迁移到 VB.NET/IKVM 中,并使用以下四行重新创建了原始错误:
Dim connectionUrl As String = "jdbc:sqlserver://db\instance;integratedsecurity=true"
Dim driver As String = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
java.sql.DriverManager.registerDriver(New com.microsoft.sqlserver.jdbc.SQLServerDriver())
Dim dbConn As java.sql.Connection = java.sql.DriverManager.getConnection(connectionUrl)
所以,我很确定,如果我能让这四行工作,我的问题应该得到解决。有人有什么想法吗?提前致谢!