我应该总是在android sqlite中使用事务吗?

我应该总是在android sqlite中使用事务吗?,android,sqlite,transactions,Android,Sqlite,Transactions,下面是一个简单的例子: public boolean containsId(Long userid) { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from " + getTableName() + " where id = " + userid, null); boolean rows = cursor.getCount() > 0;

下面是一个简单的例子:

public boolean containsId(Long userid) {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery("select * from " + getTableName() + " where id = " + userid, null);
    boolean rows = cursor.getCount() > 0;
    db.close();
    return rows;
}
我以为sqlite会自动启动一个事务。我的同事说我必须总是开始交易

那么,正确的模式是什么?如果我从数据库读取数据,是否应该启动事务?我确信此时没有其他线程会在这个表中写入

除非在事务中,否则不能对数据库进行任何更改。 任何更改数据库的命令(基本上是任何SQL命令 选择以外的选项)将自动启动事务(如果 还没有生效。自动启动的事务是 在最后一个查询完成时提交

可以使用BEGIN命令手动启动事务。这样的 事务通常持续到下一次提交或回滚 指挥部。但是,如果数据库被激活,事务也将回滚 关闭,或者如果发生错误和回滚冲突解决方案 指定了算法

因此,是的,事务会自动启动。但是,如果执行多个查询而不手动启动事务,则会启动和完成多个事务,这会对性能产生负面影响。
此外,自动回滚机制仅在单个查询失败时回滚该查询