2012-01-15 53 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