Android 使用SQLite获取正确的ID
我是通过示例来实现的,这是我第一次尝试使用SQLiteAndroid 使用SQLite获取正确的ID,android,android-sqlite,Android,Android Sqlite,我是通过示例来实现的,这是我第一次尝试使用SQLite String name = etNewName.getText().toString(); String address = etNewAdress.getText().toString(); ContentValues cv = new ContentValues(); cv.put("name", name); cv.put("address", address); long rowID = db.insert("Org", nul
String name = etNewName.getText().toString();
String address = etNewAdress.getText().toString();
ContentValues cv = new ContentValues();
cv.put("name", name);
cv.put("address", address);
long rowID = db.insert("Org", null, cv);
Log.d("MyLog", "row inserted, ID = " + rowID);
updateDB();
adapter.notifyDataSetChanged();
例如,在log中,我得到了ID=1510,但当然,当我这样做的时候
int idColIndex = c.getColumnIndex("id");
int id = c.getInt(idColIndex);
Log.d("MyLog"," get id="+id);
它返回0,不返回插入数据时获得的行ID,尽管我从文件中使用的初始DB在“ID”字段中获得了它的ID
如何将索引记录到“id”字段中?
getColumnIndex
将列名转换为列号。
返回0只意味着id
是光标中的第一列
要获取光标当前行中某列的值,必须调用:
您需要使用下面的代码来获取ID的整数值
int id = c.getInt(c.getColumnIndex("id"));
说明:
假设您的查询是
SELECT ID, COL1, COL2 FROM MYTABLE;
如果查询返回的结果集为,
ID COL1 COL2
1234 1020 2040
然后
对不起,我错过了那个!我更新了问题。当然,我使用int id=c.getInt(idColIndex);,id仍然为0,因为插入数据时,它将返回表中的行号。另一方面,在插入数据时没有为id指定任何值。如果模式将0作为id的默认值,那么实际上没有什么错误。这只是一个猜测,因为我不知道数据库的真正模式。为什么需要知道行id?可能是重复的而不是重复的。但我插入的每个新数据都有0个id!应该有所不同。此外,插入后的第一个日志显示id=1523之类的内容,它实际上与“此问题已回答”无关!!答案完全与我的问题无关
SELECT ID, COL1, COL2 FROM MYTABLE;
c.getColumnIndex("id") ==> 0
c.getColumnIndex("COL1") ==> 1
c.getColumnIndex("COL2") ==> 2
c.getInt(c.getColumnIndex("id")); ==> 1234
c.getInt(c.getColumnIndex("id")); ==> 1020
c.getInt(c.getColumnIndex("id")); ==> 2040