很简单的问题,但我仍然没有在互联网上找到我的答案:基本上我刚刚创建了一个新的行并将它插入到数据库中,但是我想保存新创建的那一行的主键。我怎样才能访问它?目前,我正试图使用列的其余值来查找某一行,但我正在将SQLiteException : bind或列索引超出范围。
下面是我当前函数试图获取密钥的代码:
public String getPrimaryKey(String gameTitle, String gameType, String calories, String hours, String minutes) {
Cursor cursor = db.query(TABLE_NAME, null, null,new String[]{gameTitle, gameType,calories, hours, minutes},null, null,null,null);
if(cursor.getCount()<1)
{
cursor.close();
return "????";
}
cursor.moveToFirst();
String keyid = cursor.getString(cursor.getColumnIndex(KEY_ID));
cursor.close();
return keyid;
}参数中传递的字符串是我试图用来访问主键的其他列。
非常感谢!
发布于 2013-08-09 20:42:00
here的答案将给出获得最后一个插入ID所需的内容。
不幸的是,根据rowid.html
如果一个单独的线程在运行sqlite3_last_insert_rowid()函数时在同一数据库连接上执行一个新插入,并因此更改了最后一个INSERT rowid,那么sqlite3_last_insert_rowid()返回的值是不可预测的,可能不等于旧的或新的最后插入rowid。
因此,获取最后一行ID很容易出现并发问题。
您可能想考虑自己生成主键,而不是自动生成它。
或者,如果有其他字段/字段可以搜索唯一标识行的字段,则可以根据该字段进行选择--但是,在这种情况下,其他字段实际上应该是实际的主键。
https://stackoverflow.com/questions/18155176
复制相似问题