2014-06-30 47 views
-1

我有我的數據庫行號問題。我的表有3列(ROWID,WORD,DEFINITION)和3行。我刪除第二行,然後嘗試查詢同一行,我的應用程序失敗。這是一個自動增量問題嗎?我該怎麼辦?Sqlite行號

這是我的代碼;
//獲取該功能

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..()中只能訪問遊標數據的返回值,如果此舉成功,將光標指向一個有效行。

+0

nop,它不起作用。我認爲我的應用必須在刪除第二行後將第三個ROWID減少爲2,但我真的不知道如何去做 – portiexc

+1

標識符在分配後不應該發生變化。如果一段代碼依賴於連續的標識符,請修復該段代碼。 – laalto

+0

我明白了,謝謝你的信息 – portiexc