【问题标题】:Android SQLite connection managementAndroid SQLite 连接管理
【发布时间】:2011-10-12 08:40:31
【问题描述】:

我在我的 android 项目中使用 SQLite。有一个特性对我来说很清楚——如果有多个线程与 DB 一起工作,那么它们应该只使用一个 DBHelper 实例,SQLite 保证对 DB 的安全访问(即使它是并发的)。 但我还有一件事需要澄清。我应该如何管理数据库连接(SQLiteDatabase 对象)?我应该多久拨打一次geWritableDatabase()close()?如果我调用这些方法一次可以吗?还是每次对DB进行读/写操作时获取SQLDatabase对象并关闭一个比较好?

【问题讨论】:

    标签: android database sqlite connection


    【解决方案1】:

    默认情况下处理...我的意思是,如果一个可写数据库打开,每当您尝试访问只读数据库时,它会关闭可写数据库并创建新的只读数据库实例。据我所知:)

    【讨论】:

    • 如果我想从多个线程写入数据库,是否应该在每个线程中调用 getWritableDatabase() 和 close()?
    • 是的。最好每次都调用 getWritableDatabase() 和 getReadableDatabase() 方法,以确保您将使用哪个方法...此外,如果有多线程,您必须在那里管理某种同步,没有开发人员希望他/她的数据库在从数据库中获取数据时关闭
    • 还可以查看 javadoc 描述...创建和/或打开数据库。这将与 getWritableDatabase() 返回的对象相同,除非某些问题(例如磁盘已满)需要以只读方式打开数据库。在这种情况下,将返回一个只读数据库对象。如果问题得到解决,未来对 getWritableDatabase() 的调用可能会成功,在这种情况下,只读数据库对象将被关闭,并且将来会返回读/写对象。
    • 事实上,getReadableDatabase 在大多数情况下返回可写连接。如果设备内存不足,您只会获得只读连接。
    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2016-04-08
    相关资源
    最近更新 更多