我创建了一个包含两列的表(Detail),一列(ID)是主列,自动递增,而另一列(EmpName)是varchar类型。在数据库中插入数据时,我只使用以下代码在EmpName列中插入数据。但我想知道该记录的详细信息(ID和名称,但我知道只有名称和ID由数据库创建)。我可以编写另一个select语句并在执行insert查询后得到游标的最后一条记录,但如果在执行select语句之前再进行另一次插入,那么我的数据库会给出错误的结果。我怎样才能获得详细信息?
ContentValues initialvalues = new ContentValues();
initialvalues.put("EmpName", "John");
db.insert("Detail", null, initialvalues);// db is database
以上代码适用于在数据库中插入数据但如何获取详细信息?
答案 0 :(得分:0)
请API:SQLiteStatement.executeInsert()
根据源代码:
/**
* Execute this SQL statement and return the ID of the row inserted due to this call.
* The SQL statement should be an INSERT for this to be a useful call.
*
* @return the row ID of the last row inserted, if this insert is successful. -1 otherwise.
*
* @throws android.database.SQLException If the SQL string is invalid for
* some reason
*/
public long executeInsert() {
BlockGuard.getThreadPolicy().onWriteToDisk();
if (!mDatabase.isOpen()) {
throw new IllegalStateException("database " + mDatabase.getPath() + " already closed");
}
long timeStart = SystemClock.uptimeMillis();
mDatabase.lock();
acquireReference();
try {
native_execute();
mDatabase.logTimeStat(mSql, timeStart);
return (mDatabase.lastChangeCount() > 0) ? mDatabase.lastInsertRow() : -1;
} finally {
releaseReference();
mDatabase.unlock();
}
}