2012-01-15 88 views
0

我正在嘗試更新使用auto_increment作爲主鍵的特定行。基本上,我在一個活動中初始化表格,並且我想在另一個表格上完成表格。所以,我使用更新功能來做到這一點。但是,當我登錄查看有多少行受到影響時,我會返回0。 這裏是我的代碼:更新Android上SQLite的特定行

public void updateValue(String updatedValue){ 
String strFilter = " (" + primaryKey + "== "+ "(SELECT last_insert_rowid())" + ")"; 
    ContentValues values = new ContentValues(); 
    values.put(val, updatedValue); 
    db = this.getWritableDatabase(); 

    int rows= db.update(myTable, values, strFilter, null); 
    Log.d(LOG_TAG, "The change has affected " + rows 
      + " rows."); 
    db.close(); 

} 

回答

0

我認爲在以下行的問題:

String strFilter = " (" + primaryKey + "== "+ "(SELECT last_insert_rowid())" + ")"; 

應該寫的,我想,以下列方式:

String strFilter = primaryKey + "=" + "(SELECT last_insert_rowid())"; 

但是,如果它返回最後一個插入的行,則應控制此部分的返回(SELECT last_insert_rowid())

0

使用

"String query = SELECT seq from SQLITE_SEQUENCE WHERE name = \'"+tableName+"\'"; 

,而不是

SELECT last_insert_rowid() 
+0

什麼是序列?你的意思是使用我的主鍵的名字? – JustCurious 2012-01-15 22:06:44

+0

seq是sqlite_sequence表中的一個特殊字段,它包含autoincrement的值。你只需要指出你正在尋找自動增量值的表格。 – 2012-01-16 13:19:16