gpt4 book ai didi

java - 使用 JDBC 连接到 .NET/IKVM 中的 SQL Server

转载 作者:行者123 更新时间:2023-12-01 15:07:52 26 4
gpt4 key购买 nike

我编写了一个 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 位 auth dll 而不是 64 位),并且收到了完全相同的错误,我认为这很奇怪。然后,我从 app.config 中删除了这一行,并收到“无法加载 sqljdbc_auth.dll”警告,并显示“此驱动程序未配置为集成身份验证”。 SQLServerException。

我将数据库连接代码迁移到 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)

所以,我很确定,如果我能让这四行工作,我的问题应该得到解决。有人有什么想法吗?提前致谢!

最佳答案

跟踪发生情况的方法是使用 Java Throwable.printStackTrace() 方法打印异常(到控制台)。这样您就可以找到根本原因。

Try
...
Catch x as java.lang.ExceptionInInitializerError
x.printStackTrace()
End Try

我的猜测是,这将表明问题是您忘记将 ikvm-native-win32-x86.dll(或 ikvm-native-win32-x64.dll)复制到您的应用程序目录。

关于java - 使用 JDBC 连接到 .NET/IKVM 中的 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12736839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com