monodata . sqlite . sqliteconnection . setconfig抛出库使用不正确异常

本文关键字:不正确 异常 sqlite sqliteconnection setconfig monodata | 更新日期: 2023-09-27 18:04:09

使用Xamarin。Android,我试过用monol . data . sqlite包来玩一个sqlite数据库(使用Nexus 7)。

一切都很好,直到我试图使用多个线程,然后我得到一个损坏的数据库或各种异常锁定数据库(这意味着我不得不停止并重新启动应用程序才能再次访问数据库)。

根据这里的建议,我已经尝试在我的应用程序中尽早执行以下代码:

Mono.Data.Sqlite.SqliteConnection.SetConfig (Mono.Data.Sqlite.SQLiteConfig.Serialized);

但是在那行我得到一个mono_data。sqlite。sqliteexception声明:

Library used incorrectly

我已经尝试了3个可能的值为枚举(单线程,序列化,多线程)与相同的结果。

这个方法是否有效?


编辑:我修复了我的源问题(那些讨厌的无限循环,我永远不会摆脱那个…),所以不需要再为我玩线程配置了。

我将把这个问题留给其他人,因为这个问题仍然存在,并且被其他人实验过(参见这个答案的评论)

monodata . sqlite . sqliteconnection . setconfig抛出库使用不正确异常

无论如何,我发现当对数据库进行写操作时,试图访问SQLite是非常敏感的。话虽如此,我也不会写太多反对自己观点的文章。然而,我确实想提一下,你可能有幸运的可读访问和多线程。如果您还没有这样做,我建议您使用显式的写/读路径调用它。我在我的代码中使用它来简化,

         protected SQLiteConnection ReadableDB
         {
             get{return new SQLiteConnection(ReadableDatabase.Path);}
          }
         protected SQLiteConnection WriteableDB
         {
             get{return new SQLiteConnection(WritableDatabase.Path);
         }