Sqlite行号

时间:2014-06-30 09:21:56

标签: sqlite

我的数据库行号有问题。我的表有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;
    }

1 个答案:

答案 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..()的返回值,如果移动成功并且光标指向有效行,则仅访问游标数据。