SQLite.NET PCL忙碌异常

前端之家收集整理的这篇文章主要介绍了SQLite.NET PCL忙碌异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们在Xamarin应用程序中使用sqlite.NET PCL.

通过插入多个表将数据库置于压力之下,我们看到抛出BUSY异常.

任何人都可以解释BUSY和LOCKED之间的区别吗?是什么导致数据库忙?

我们的代码使用与使用以下代码创建的数据库的单个连接:

var connectionString = new sqliteConnectionString(GetDefaultConnectionString(),_databaseConfiguration.StoreTimeAsTicks);
var connectionWithLock = new sqliteConnectionWithLock(new sqlitePlatformAndroid(),connectionString);

return new sqliteAsyncConnection (() => { return connectionWithLock; });

解决方法

所以我们的问题结果是,虽然我们已经确保在类中我们写了它只创建了一个到数据库的单一连接,我们还没有确保这个类是一个单例,因此我们仍然创建了多个连接到数据库.一旦我们确定它是单身,那么繁忙的错误就会停止

我从中得到的是:

锁定意味着您有多个线程试图访问数据库,代码本质上不是线程安全的.

繁忙意味着你有一个线程在另一个线程上等待完成,你的代码是线程安全的,但你看到使用数据库的争用.

猜你在找的Sqlite相关文章