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

seqが何ですか?私の主キーの名前を使用するのですか? – JustCurious

+0

seqは、autoincrementの値を保持するsqlite_sequenceテーブル内の特別なフィールドです。オートインクリメントの値を探しているテーブルを指定するだけです。 –

関連する問題