使用SQLite获取正确的ID

时间:2014-09-10 07:55:45

标签: 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", null, cv);
Log.d("MyLog", "row inserted, ID = " + rowID);

updateDB();
adapter.notifyDataSetChanged();

所以在日志中,我得到ID = 1510,但当然,当我做

int idColIndex = c.getColumnIndex("id");
int id = c.getInt(idColIndex);
Log.d("MyLog"," get id="+id);

它返回0,它不会返回我插入数据时得到的行ID,尽管我从文件中使用的初始数据库在'id'字段中得到了它的ID。

如何将该索引记录到“id”字段?

2 个答案:

答案 0 :(得分:0)

getColumnIndex将列名转换为列号。 返回0只意味着id是游标中的第一列。

要获取光标当前行中某些列的值,您必须调用getInt()

int id = c.getInt(idColIndex);

答案 1 :(得分:0)

您需要使用以下代码来获取ID

的整数值
int id = c.getInt(c.getColumnIndex("id"));

说明: 假设您的查询是

SELECT ID, COL1, COL2  FROM MYTABLE;

如果查询返回结果集say,     ID COL1 COL2     1234 1020 2040

然后

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