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

SQLite cannot open database with password encryption

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

EntryPointNotFoundException: sqlite3_key Mono.Data.Sqlite.SQLite3.SetPassword (System.Byte[] passwordBytes) Mono.Data.Sqlite.SqliteConnection.Open () SQLiteHandler.Start () (at Assets/Script/SQLiteHandler.cs:18)

这是我的连接代码,既没有将密码放入连接字符串也没有使用 SetPassword 工作。

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!;"; 

希望对您有所帮助。

Mono.Data.Sqlite不支持密码保护,不包括sqlite3_key和sqlite3_rekey这两个关键入口点。所以,最好寻找其他扩展或库。

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