【发布时间】:2010-11-18 19:10:27
【问题描述】:
我有一个使用 sqlite 数据库的 Monotouch 应用程序。我想加密数据库,所以我这样做:
_mainConnection = new SqliteConnection("Uri="+finalDB);
_mainConnection.Open();
_mainConnection.ChangePassword("mypassword");
但是,它不起作用(在模拟器和 iphone 上)。它得到这个错误:
at(包装器托管到本机) Mono.Data.Sqlite.UnsafeNativeMethods.sqlite3_rekey (intptr,byte[],int) 在 (包装器托管到本机) Mono.Data.Sqlite.UnsafeNativeMethods.sqlite3_rekey (intptr,byte[],int) 在 Mono.Data.Sqlite.SQLite3.ChangePassword (byte[]) 在 Mono.Data.Sqlite.SqliteConnection.ChangePassword (byte[]) 在 Mono.Data.Sqlite.SqliteConnection.ChangePassword (字符串)
有没有人在 Monotouch 的 sqlite 数据库上成功使用过密码保护?
【问题讨论】:
-
您试过查看 Vici.Coolstorage 吗?他们有一个 Monotouch 分支,可以在 iphone 上加密 sqlite db 的内容方面创造奇迹。虽然,我不知道它会允许您对数据库本身进行密码保护,但它仍然可能是一个合适的选择。
-
除非 iphone 连接到与 SQL Server 相同的 VPN,否则您需要找到加密和解密的方法
-
您很可能会收到此错误,因为 iOS SQLite 不附带该本机功能。我在下面的回答中提供了一些用于 SQLite 数据库加密的替代机制。不支持的功能:docs.xamarin.com/ios/advanced_topics/…
标签: sqlite xamarin.ios