android - 我们可以在 android sqlite DB 中同时填充 getWritableDatabase() 和 getReadableDatabase() 请求吗
问题描述
我正在尝试从两个线程从 Android 应用程序中的 SQLite DB 请求一些数据。因此,是否可以在 android 中的同一 db 实例上同时调用 getReadableDatabase() 和 getWritableDatabase()。
解决方案
答案是肯定的,但在某些情况下也是否定的。
除非数据库只能读取,否则基本上getReadableDatabase
会得到一个“可写”的数据库。getWritableDatabase
如果数据库不可写,则会失败。
按照 :-
在 API 级别 1 SQLiteDatabase 中添加的getReadableDatabase
getReadableDatabase()
创建和/或打开数据库。
这将与返回的对象相同,
getWritableDatabase()
除非某些问题(例如磁盘已满)要求以只读方式打开数据库。在这种情况下,将返回一个只读数据库对象。如果问题得到解决,未来的调用
getWritableDatabase()
可能会成功,在这种情况下,只读数据库对象将被关闭,读/写对象将在未来返回。
因此,如果数据库是可写的,那么肯定是 Yes,但如果数据库是只读的,那么就有getWritableDatabase
可能失败,因此对于这种可能很少见的情况,No。
通常,除非特别想处理无法打开数据库进行写入的情况,否则getWritableDatabase
可能确实需要使用。即getReadableDatabase
如果数据库不可写但可以读取,则确实允许您进行一些访问。它通常不会防止写入/更新数据库。
推荐阅读
- r - 每个分面箱线图一个类别
- node.js - 如何在 Express Project 中使用 AWS Secrets Manager 获取凭证?
- javascript - 8位单通道JPEG灰度图像
- java - 纪事消费者没有正确阅读记录?
- nexus - 使用 helm 在 Kubernetes 集群中运行 nexus
- angular - Angular 2:再次加载组件,包括 templateUrl 和 styleUrls
- sql-server - 将 Logstash 连接到 SQL Server
- magento2 - Magento 2 Override Magento Checkout Model Cart updateItems 功能
- javascript - Node JS:只允许服务器端调用我的 api
- vba - VBA:根据单元格值将Excel行移动和删除到其他工作表