C#Can'中的H2数据库;找不到安全方法错误

C#Can'中的H2数据库;找不到安全方法错误,c#,database,h2,missingmethodexception,C#,Database,H2,Missingmethodexception,这几天来,我一直在为这个问题绞尽脑汁,但我似乎不知道是什么原因造成的。我正在尝试连接到C#中的H2数据库。我在stack overflow上找到了这篇文章: 这正是我想要的。我在这里看到了他的链接: 这给了我关于如何将C#连接到H2数据库的非常清晰的说明。我遇到的唯一一个小问题是,我从未找到任何名为IKVM.OpenJDK.ClassLibrary.dll的文件,但我认为“ClassLibrary”只是一个通用术语。因此,我最终将IKVM.OpenJDK.jdbc.dll、IKVM.Open

这几天来,我一直在为这个问题绞尽脑汁,但我似乎不知道是什么原因造成的。我正在尝试连接到C#中的H2数据库。我在stack overflow上找到了这篇文章:

这正是我想要的。我在这里看到了他的链接:

这给了我关于如何将C#连接到H2数据库的非常清晰的说明。我遇到的唯一一个小问题是,我从未找到任何名为IKVM.OpenJDK.ClassLibrary.dll的文件,但我认为“ClassLibrary”只是一个通用术语。因此,我最终将IKVM.OpenJDK.jdbc.dll、IKVM.OpenJDK.Core.dll和h2-1.4.200.dll添加到我的项目中。我通过右键单击“依赖项”,然后选择“添加引用…”选项来添加它们。这似乎是可行的,因为它清除了所有编译错误,并且我能够通过我的IDE(VisualStudio)访问文档。这意味着当我输入一个对象名并按下句号时,我看到了所有可以从该对象调用的方法。但是,当我运行代码时,出现了一个错误:

MissingMethodException:找不到方法:“Void System.IO.FileStream..ctor(System.String、System.IO.FileMode、System.Security.AccessControl.FileSystemRights、System.IO.FileShare、Int32、System.IO.FileOptions)”

我已经尽力了。我尝试过将h2-1.4.200.dll重命名为h2.dll,我回到了第一步,从.jar文件重建了.dll,非常小心地完全按照说明操作。我已尝试将相对路径更改为绝对路径。我试过用谷歌搜索这个问题,但我得到的只是一些帖子,上面说它工作得很好。所以我用这个撞到了墙。以下是我的源代码:

//using System;
//using System.Collections.Generic;
using java.sql;

// This may seem pointless, since H2 databases already have a way to interface with C#, however the native interface seem to break 
// the InitComponent() function when interfacing with a WPF application
class Program
{
    public static Connection dbConnection;

    static void Main(string[] args)
    {
        //Console.WriteLine("Running H2 Interface");
        connectToDatabase("jdbc:h2:~/ESDB", "", "");
    }

    public static bool connectToDatabase(string connectionString, string username, string password)
    {
        org.h2.Driver.load();
        DriverManager.println("Sure");  // This is just here to test a function (any function).  This actually passed
        dbConnection = DriverManager.getConnection(connectionString, username, password);  // This is the line it crashes on
        
        return true;
    }

    //public static List<String> runQuery(string query)
    //{
    //    List<String> results = new List<String>();
        
    //    Statement stat = dbConnection.createStatement();
    //    ResultSet rs = stat.executeQuery(query);
    //    while (rs.next())
    //    {
    //        results.Add(rs.getString(1));
    //    }

    //    return results;
    //}
}
//使用系统;
//使用System.Collections.Generic;
使用java.sql;
//这似乎毫无意义,因为H2数据库已经有了与C#接口的方法,但是本机接口似乎中断了
//与WPF应用程序接口时的InitComponent()函数
班级计划
{
公共静态连接;
静态void Main(字符串[]参数)
{
//Console.WriteLine(“运行H2接口”);
connectToDatabase(“jdbc:h2:~/ESDB”,“”,“”);
}
公共静态bool connectToDatabase(字符串连接字符串、字符串用户名、字符串密码)
{
org.h2.Driver.load();
DriverManager.println(“Sure”);//这里只是测试一个函数(任何函数)。这实际上传递了
dbConnection=DriverManager.getConnection(connectionString、username、password);//这是它崩溃的那一行
返回true;
}
//公共静态列表运行查询(字符串查询)
//{
//列表结果=新列表();
//Statement stat=dbConnection.createStatement();
//结果集rs=stat.executeQuery(查询);
//while(rs.next())
//    {
//结果.添加(rs.getString(1));
//    }
//返回结果;
//}
}

这些指令是12年前编写的,此后H2和.NET都进行了重大修改。