如何在thansaction體中獲得自動增量值?交易體中的自動增量值
代碼
public void insertAllStudents(List<Student> students) {
String sql = "INSERT INTO "+ StudentEntry.TABLE_NAME +" VALUES (?,?,?,?,?);";
SQLiteDatabase db = this.getWritableDatabase();
SQLiteStatement statement = db.compileStatement(sql);
db.beginTransaction();
for (Student student: students) {
statement.clearBindings();
statement.bindString(2, student.getId());
statement.bindString(3, student.getFirstName());
statement.bindString(4, student.getLastName());
statement.bindLong(5, student.getBirthday());
statement.execute();
}
db.setTransactionSuccessful();
db.endTransaction();
}
第一列(_ID)是自動增量字段。獲得這個價值有沒有機會? student.getId() - 這不是來自數據庫的ID,這是不同的ID。
db.insert()需要大量的時間,所以使用事務將數據插入我。但是,在完成交易之前,我可以獲得id值嗎? – Andrew
是的,'SELECT LAST_INSERT_ROWID()'應該可以工作,即使在一個事務中 - http://stackoverflow.com/questions/376773/in-sqlite3-can-a-select-succeed-within-a-transaction-of-順便插入 – Tom
@Andrew,你應該可以在事務中使用db.insert() - 它只是在引擎蓋下編譯一個語句。 – Tom