C# 在Visual Studio 2013的Windows上使用Mono.Data.Sqlite

C# 在Visual Studio 2013的Windows上使用Mono.Data.Sqlite,c#,.net,windows,sqlite,mono,C#,.net,Windows,Sqlite,Mono,编辑:好的,我注意到我更改了项目的输出文件夹,并将DLL放入旧的输出文件夹中。将其放入正确的输出文件夹后,Open()工作!稍后我会遇到另一个异常,但我想我可以修复它 我正在开发一个程序,该程序在Windows的.NET和Linux/Mac的Mono上运行。我正在尝试向它添加一个非常简单的SQLite记录器。我将Mono.Data.Sqlite.dll(Mono 3.10版本)添加到Visual Studio 2013中的项目引用中,并将一个sqlite3.dll()复制到调试文件夹(创建程序e

编辑:好的,我注意到我更改了项目的输出文件夹,并将DLL放入旧的输出文件夹中。将其放入正确的输出文件夹后,Open()工作!稍后我会遇到另一个异常,但我想我可以修复它

我正在开发一个程序,该程序在Windows的.NET和Linux/Mac的Mono上运行。我正在尝试向它添加一个非常简单的SQLite记录器。我将Mono.Data.Sqlite.dll(Mono 3.10版本)添加到Visual Studio 2013中的项目引用中,并将一个sqlite3.dll()复制到调试文件夹(创建程序exe的地方)

这是我的测试代码:

using Mono.Data.Sqlite;
using System.Data;

namespace Program.Logging
{
    class MyLogger
    {
        public void TestMethod()
        {
            string connectionString = "URI=file:SqliteTest.db";
            IDbConnection dbcon;
            dbcon = (IDbConnection)new SqliteConnection(connectionString);
            dbcon.Open();
        }   
    }
}
但是,当我尝试运行代码时,在dbcon.Open()处出现以下错误:

“System.EntryPointNotFoundException”类型的未处理异常 发生在Mono.Data.Sqlite.dll中

附加信息:Der Einstiegspunkt“sqlite3\u next\u stmt”wurde 不在DLL“sqlite3”中。(进入点) 在DLL“sqlite3”中找不到“sqlite3\u next\u stmt”。)

我做错了什么

编辑:

中发生类型为“System.ArgumentException”的未处理异常 mscorlib.dll。附加信息:URI Format werden nicht unterstützt。(不支持URI格式。)

中发生类型为“System.ArgumentException”的未处理异常 Mono.Data.Sqlite.dll。其他信息:无效的ConnectionString 参数“version3”的格式


似乎您使用了错误的连接字符串格式。指定连接字符串格式:

[1.1 profile and the old assembly]
URI=file:/path/to/file

[2.0 profile in the new assembly]
Data Source=file:/path/to/file
既然您的目标是sqlite3,我想您应该使用2.0配置文件格式

string connectionString = "Data Source=file:SqliteTest.db";
他们还提到,在1.1概要文件中,默认情况下使用sqlite版本2,如果使用旧格式,则必须指定要使用的版本

string connectionString = "URI=file:SqliteTest.db,version=3";

我尝试了建议的连接字符串的两个版本,它们都抛出了不同的异常。很抱歉,第二个版本有一个输入错误,它应该有
version=3
。我在正确的输出文件夹中没有DLL。我之前更改了输出文件夹,但忘记了它,并将DLL放入了旧文件夹。。。
string connectionString = "Data Source=file:SqliteTest.db";
string connectionString = "URI=file:SqliteTest.db,version=3";