关于SQLite,Android上SQLite的最佳实践
·Sqlite拥有文件级别的锁。许多线程可以同时读,但只有一个可以写。锁阻止多个同时写入。 ·Android在SQLiteDatabase中实现了一些java锁来确保动作是同步进行。 ·如果你用多个线程疯狂地访问数据库,你的数据库不会(或不应该)崩溃。 没如果你通过多个不同的真实连接同时写数据库,其中的某个会失败,它不会等到前一个完成后继续写入。简单地,不会写入你的改变,更糟糕的是,你也得不到一个异常,只是在LogCat中输出一些message,仅此而已。
因此,我推荐这样使用:创建一个SQLiteOpenHelper静态对象。什么时候去close它呢?不需要。当app关闭,它会自动释放文件引用。 但是,会不会有“close() was never explicitly called on database”异常呢? 如果你注意的话,当连接挂在那里的时候,你没有得到那个异常。你只是在连接已经建立,而你又尝试打开另一个时才会有异常。因此,你只需要打开一次连接 getReadableDatabase()并不是以只读方式打开数据库,而是先执行getWritableDatabase(),失败的情况下才调用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |