我的数据库行号有问题。我的表有3列(ROWID,WORD,DEFINITION)和3行。我删除第二行然后我尝试查询同一行,我的应用程序失败。这是一个自动增量问题吗?我该怎么办?
这是我的代码;
//获取该功能
public String getThat(int id) {
String result= "";
String[] columns = new String[]{KEY_ROWID,KEY_WORD,KEY_DEFINITION};
Cursor c = ourDatabase.query(DB_TABLE, columns, KEY_ROWID +
"=" + id, null, null, null, null,null);
if(c!=null){
c.moveToFirst();
}
result = c.getString(c.getColumnIndex(KEY_DEFINITION));
return result;
}
//删除功能
public boolean deleteRecords(long rowId){
return ourDatabase.delete(DB_TABLE, KEY_ROWID +"="+rowId,null)>0;
}
答案 0 :(得分:1)
当查询与任何内容都不匹配时,无论如何都会返回非空Cursor
,但它不包含任何行。当您尝试从不存在的行访问数据时,将引发异常。
更改此
if(c!=null){
c.moveToFirst();
}
result = c.getString(c.getColumnIndex(KEY_DEFINITION));
类似
if(c.moveToFirst()){
result = c.getString(c.getColumnIndex(KEY_DEFINITION));
}
即。检查moveTo..()
的返回值,如果移动成功并且光标指向有效行,则仅访问游标数据。