C# SQLite无法使用密码加密打开数据库

C# SQLite无法使用密码加密打开数据库,c#,sqlite,mono,C#,Sqlite,Mono,我正在使用SQLite处理一个Unity项目。打开加密数据库时,会显示以下错误消息: EntryPointNotFoundException:sqlite3\U密钥 Mono.Data.Sqlite.SQLite3.SetPassword(System.Byte[]passwordBytes) Mono.Data.Sqlite.SqliteConnection.Open()SQLiteHandler.Start()(位于 Assets/Script/SQLiteHandler.cs:18) 这是

我正在使用SQLite处理一个Unity项目。打开加密数据库时,会显示以下错误消息:

EntryPointNotFoundException:sqlite3\U密钥 Mono.Data.Sqlite.SQLite3.SetPassword(System.Byte[]passwordBytes) Mono.Data.Sqlite.SqliteConnection.Open()SQLiteHandler.Start()(位于 Assets/Script/SQLiteHandler.cs:18)

这是我的连接代码,既不将密码放入连接字符串,也不使用
SetPassword
work

connString = string.Format("Data Source={0};Version=3;Password=testing123",Application.dataPath+"/demodb.db");
using (conn = new SqliteConnection (connString)) {
    conn.Open ();
    //do something
    conn.Close ();
}

最初创建数据库时(或至少在打开数据库之前)必须使用SetPassword(),例如:

SQLiteConnection.CreateFile(DataPath + "/SomeDb.sqlite");
SQLiteConnection cnn = new SQLiteConnection("Data Source=" + DataPath + "/SomeDb.sqlite");
cnn.SetPassword("testing123!");
 var ConnectionString = "Data Source=" + DataPath + "/SomeDb.sqlite;Password=testing123!;"; 
然后,您可以使用连接字符串中的密码访问数据库-例如:

SQLiteConnection.CreateFile(DataPath + "/SomeDb.sqlite");
SQLiteConnection cnn = new SQLiteConnection("Data Source=" + DataPath + "/SomeDb.sqlite");
cnn.SetPassword("testing123!");
 var ConnectionString = "Data Source=" + DataPath + "/SomeDb.sqlite;Password=testing123!;"; 

希望这会对您有所帮助。

Mono.Data.Sqlite
不支持密码保护,它不包括两个关键入口点sqlite3\u key和sqlite3\u rekey。因此,最好寻找其他扩展或库

这是一个有用的Unity包
这非常适合密码保护。

有几件事:1。你确定你有正确的版本吗?2.我在这里看到一些问题,我将假定这些问题是您在示例中犯的错误,并且在实际代码中不存在,例如您从未声明
conn
。如何检查版本?2.是的,
conn
已经很好地声明了,这里只是我代码的一部分。使用的版本是3.18。您使用的是Mono吗?@Sty是。MonoDevelop UnityTanks供您评论!数据库文件已创建,但无法使用密码进行访问。如果数据库没有设置密码保护,我可以访问它,因此我认为这不是db文件问题,而是实现问题。我认为密码保护仅在版本3中可用-您在连接字符串中明确表示版本=3,但SQLite文件版本3吗?您是在代码中自己创建文件,还是从其他地方获取文件?这是一个古老的主题,但Unity网站上有一个值得一试的讨论:如何确保其版本?我确信文件的位置是正确的。哈!伟大的头脑-我注意到在其他评论中,你的版本很好-我恐怕我已经使用了SQLite一点,但没有使用Mono,所以可能不得不把你交给专家!如果你得到一个答案,尽管一定要张贴它,你已经让我好奇。。。