Séb*_*mer 5 c# android xamarin.android xamarin
使用 Xamarin.Android,我尝试使用 Mono.Data.Sqlite 包(使用 Nexus 7)使用 sqlite 数据库。
一切都很好,直到我尝试使用多个线程,然后我得到了一个损坏的数据库或锁定数据库的各种异常(这意味着我必须停止并重新启动应用程序才能再次访问数据库)。
Mono.Data.Sqlite.SqliteConnection.SetConfig (Mono.Data.Sqlite.SQLiteConfig.Serialized);
Run Code Online (Sandbox Code Playgroud)
但是我在该行上收到一个 Mono.Data.Sqlite.SqliteException ,说明:
Library used incorrectly
Run Code Online (Sandbox Code Playgroud)
我已经尝试了 3 个可能的枚举值(SingleThreaded、Serialized、MultiThreaded),结果相同。
这种方法真的有效吗?
编辑:我修复了我的源问题(那些讨厌的无限循环,我永远不会摆脱它......),所以不需要再为我玩线程配置了。
不过,我会将这个问题留给其他人,因为问题仍然存在,并且已被其他人试验过(参见对此答案的评论)
就其价值而言,我发现 SQLite 在对数据库进行写入时尝试访问非常敏感。话虽这么说,我并不太写反对我的文章。不过我确实想提一下,您可能会幸运地获得可读访问和多线程。如果您还没有这样做,我建议您使用显式的写/读路径来调用它。我在代码中使用它来简化,
protected SQLiteConnection ReadableDB
{
get{return new SQLiteConnection(ReadableDatabase.Path);}
}
protected SQLiteConnection WriteableDB
{
get{return new SQLiteConnection(WritableDatabase.Path);
}
Run Code Online (Sandbox Code Playgroud)