Q:了解SQLite中的事务操作吗?是如何做的

SQLite在做CRDU操作时都默认开启了事务,然后把SQL语句翻译成对应的SQLiteStatement并调用其相应的CRUD方法,此时整个操作还是在rollback journal这个临时文件上进行,只有操作顺利完成才会更新db数据库,否则会被回滚。

CRUD:增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)

Q:使用SQLite做批量操作有什么好的方法吗?

使用SQLiteDatabase的beginTransaction方法开启一个事务,将批量操作SQL语句转化为SQLiteStatement并进行批量操作,结束后endTransaction()

Q:如何删除SQLite中表的个别字段?

SQLite数据库只允许增加字段而不允许修改和删除表字段,只能创建新表保留原有字段,删除原表

Q:使用SQLite时会有哪些优化操作?

使用事务做批量操作

及时关闭Cursor,避免内存泄露

耗时操作异步化:数据库的操作属于本地IO耗时操作,建议放入异步线程中处理

ContentValues的容量调整:ContentValues内部采用HashMap来存储Key-Value数据,ContentValues初始容量为8,扩容时翻倍。因此建议对ContentValues填入的内容进行估量,设置合理的初始化容量,减少不必要的内部扩容操作

使用索引加快检索速度:对于查询操作量级较大、业务对查询要求较高的推荐使用索引

更多推荐

200斤牌面试必备:SQLite面试题 请安利(不停更)