- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作 UCanAccess在 C# 中工作。我正在 Linux 上使用 Mono 开发 MonoDevelop。我已经使用 IKVM 将所需的 .jar 文件转换为 .dll .NET 文件,这样:
ikvmc -target:library file.jar
然后我在我的 C# 项目中引用了转换后的 .dll 文件。因此,这是我引用的所有 DLL:
我还将 ucanacess-3.0.3.1.jar、hsqldb.jar、jackcess-2.1.3.jar、commons-logging-1.1.1.jar 和 commons-lang-2.6.jar 放入我的 bin/Debug 文件夹中。
这是我在 Main 中编写的 C# 代码:
//ikvm.runtime.Startup.addBootClassPathAssemby(System.Reflection.Assembly.Load("commons-lang-2.6"));
//ikvm.runtime.Startup.addBootClassPathAssemby(System.Reflection.Assembly.Load("commons-logging-1.1.1"));
//ikvm.runtime.Startup.addBootClassPathAssemby(System.Reflection.Assembly.Load("jackcess-2.1.3"));
//ikvm.runtime.Startup.addBootClassPathAssemby(System.Reflection.Assembly.Load("hsqldb"));
ikvm.runtime.Startup.addBootClassPathAssemby(System.Reflection.Assembly.Load("ucanaccess-3.0.3.1"));
java.sql.Driver v_driver = (java.sql.Driver) java.lang.Class.forName("net.ucanaccess.jdbc.UcanaccessDriver, ucanaccess-3.0.3.1, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null").newInstance();
java.sql.Connection v_con = v_driver.connect("northwind.mdb", null);
//java.lang.Class.forName("org.hsqldb.jdbcDriver, hsqldb, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
//java.lang.Class.forName("net.ucanaccess.jdbc.UcanaccessDriver, ucanaccess-3.0.3.1, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
//java.sql.Connection v_con = java.sql.DriverManager.getConnection("jdbc:ucanaccess://northwind.mdb");
java.sql.Statement v_st = v_con.createStatement();
java.sql.ResultSet v_res = v_st.executeQuery("select * from Categories");
java.sql.ResultSetMetaData v_resmd = v_res.getMetaData();
for (int i = 0; i < v_resmd.getColumnCount(); i++)
Console.Write(v_resmd.getColumnLabel(i) + "|");
Console.WriteLine();
while (v_res.next())
{
for (int i = 0; i < v_resmd.getColumnCount(); i++)
Console.Write(v_res.getString(i) + "|");
Console.WriteLine();
}
代码编译后,当我尝试执行时,这是我得到的错误:
Unhandled Exception:
System.TypeInitializationException: An exception was thrown by the type initializer for net.ucanaccess.jdbc.UcanaccessDriver ---> java.lang.RuntimeException: org.hsqldb.jdbc.JDBCDriver
--- End of inner exception stack trace ---
at (wrapper managed-to-native) System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor (intptr)
at System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor (RuntimeTypeHandle type) [0x00000] in <filename unknown>:0
at IKVM.Internal.TypeWrapper.RunClassInit () [0x00000] in <filename unknown>:0
at IKVM.NativeCode.java.lang.Class.forName0 (System.String name, Boolean initialize, java.lang.ClassLoader loader) [0x00000] in <filename unknown>:0
at java.lang.Class.forName0 (System.String , Boolean , java.lang.ClassLoader ) [0x00000] in <filename unknown>:0
at java.lang.Class.forName (System.String className, ikvm.internal.CallerID ) [0x00000] in <filename unknown>:0
at java.lang.Class.forName (System.String className) [0x00000] in <filename unknown>:0
at Test.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An exception was thrown by the type initializer for net.ucanaccess.jdbc.UcanaccessDriver ---> java.lang.RuntimeException: org.hsqldb.jdbc.JDBCDriver
--- End of inner exception stack trace ---
at (wrapper managed-to-native) System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor (intptr)
at System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor (RuntimeTypeHandle type) [0x00000] in <filename unknown>:0
at IKVM.Internal.TypeWrapper.RunClassInit () [0x00000] in <filename unknown>:0
at IKVM.NativeCode.java.lang.Class.forName0 (System.String name, Boolean initialize, java.lang.ClassLoader loader) [0x00000] in <filename unknown>:0
at java.lang.Class.forName0 (System.String , Boolean , java.lang.ClassLoader ) [0x00000] in <filename unknown>:0
at java.lang.Class.forName (System.String className, ikvm.internal.CallerID ) [0x00000] in <filename unknown>:0
at java.lang.Class.forName (System.String className) [0x00000] in <filename unknown>:0
at Test.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0
我已经尝试过注释行,但没有成功。
我错过了什么吗?提前致谢!
@jamadei 是对的,我将所有 jar 合并到一个 jar 中并且成功了!这是工作代码(注意列索引从 1 开始,而不是从 0 开始):
ikvm.runtime.Startup.addBootClassPathAssemby(System.Reflection.Assembly.Load("ucanaccess-3.0.3.1"));
java.sql.Driver v_driver = (java.sql.Driver) java.lang.Class.forName("net.ucanaccess.jdbc.UcanaccessDriver, ucanaccess-3.0.3.1, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null").newInstance();
java.sql.Connection v_con = v_driver.connect("northwind.mdb", null);
java.sql.Statement v_st = v_con.createStatement();
java.sql.ResultSet v_res = v_st.executeQuery("select categoryid, categoryname, description from Categories");
java.sql.ResultSetMetaData v_resmd = v_res.getMetaData();
for (int i = 1; i <= v_resmd.getColumnCount(); i++)
Console.Write(v_resmd.getColumnLabel(i) + "|");
Console.WriteLine();
while (v_res.next())
{
for (int i = 1; i <= v_resmd.getColumnCount(); i++)
Console.Write(v_res.getString(i) + "|");
Console.WriteLine();
}
最佳答案
您需要将所有 jar 合并为一个 jar,然后将其转换为 dll。
关于c# - UCanAccess、IKVM 和 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35602606/
与之前关于“意外 token ”的问题相关 我收到以下错误 UCAExc:::3.0.3.1 unexpected token: $BRANDRAP 当我在 NB IDE 中运行下面
我是 UCanAccess 的新手,我正在使用它来代替将 Microsoft Office 从 32 位重新安装到 64 位或将 Netbeans 8.0.2 从 64 位重新安装到 32 位。 我正
我在让 ucanaccess 连接到我的数据库时遇到问题。在构建应用程序时,我在本地维护了数据库,可以通过在 URL 中传递本地文件路径来连接到它。我现在正尝试将其转移到网上,并尝试将 URL 更改为
我正在使用 Netbeans IDE 8.02 来操作 Access 数据库,但随着驱动程序的删除,我一直在与 UCanAccess 作斗争。我已经能够将数据插入数据库,并且能够从数据库接收数据,但是
我已经正确添加了所有必需的 JARS: Ucanaccess 3.0.4 commons-lang-2.6 commons-logging-1.1.1 hsqldbd jackcess-2.1.3 我
这个问题已经有答案了: invalid datetime format: insert date/time into Access from Java (1 个回答) 已关闭 7 年前。 conn =
我正在尝试使用 UCanAccess 将我的 Java 代码连接到 access 中的表这是我的代码: import java.sql.*; public class HH { public
我有一个问题。我使用这个查询: SELECT prodeje.datum, prodeje.prodejce, prodeje.pocet, prodeje.
这个问题在这里已经有了答案: SQL INSERT without specifying columns. What happens? (6 个答案) 关闭 7 年前。 我的程序总是将 Access
我的数据库中不断出现“找不到合适的驱动程序”,但我无法确定我的连接类出了什么问题?有什么帮助吗?我已放入所有 5 个 jar。我想连接到 Microsoft Access 数据库。 import ja
我有一个可用的 Java 项目,它使用 Access .accdb 数据库来存储数据。我正在为我的程序进行更新,以便为用户提供更多功能。为此,我需要在现有的充满数据的表中添加一列。当我研究时,我发现
我正在尝试进行一些 Ucanaccess 练习,以使用 java 管理某些数据库。我收到一个错误,但我不知道如何解决。 我在 Access 中有一个名为 USERS 的表: 自动编号、短文本、短文本、
我有一个非常有趣的问题,但我没能找到问题的根源。 我的公司最近更新到了较新版本的 Java,用于连接到 MS Access DB 的旧 ODBC 连接方法不再有效。所以我正在更新到新方法。 我发现 U
需要了解如何使用 UCanAccess,我可以在这些选择中使用分组依据。 String sql = "SELECT Route_To, BatchNo, BatchScOpr, BatchTrac
是否有其他方法可以在无限循环结束时正确关闭与 ms access 数据库的连接?因为如果将记录插入表中,则使用下面的代码我看不到插入的新行。看起来数据库没有正确关闭或其他什么...不知道为什么会这样。
我已经将我的应用程序设置为通过 UCanAccess 连接到 Access 数据库,但是我无法连接到位于共享驱动器上的数据库。请参阅下面的示例。 String databasePath = "jdbc
如何使用 jdbc 编写 sql 查询来创建对 2 列具有唯一约束的表:我尝试这段代码并给出“SQLException:无效的创建语句!”: Connection conn = ConnectDB.
大家下午好,我正在尝试将一些数据插入访问表,但由于主键违规而无法运行 import java.sql.Connection; import java.sql.DriverManager; import
我正在使用 ucanaccess 将 java 与 access 数据库连接。我使用此代码来计算查询中的行数: ResultSet rs = s.getResultSet(); int size; r
我使用 UCanAccess 创建了两个表,它们之间存在关系。但它并没有创造这种关系。为什么?怎么了?我该如何解决这个问题? statement.execute("CREATE TABLE examp
我是一名优秀的程序员,十分优秀!