2011-06-30 5 views
1

[OK]私は2つのAndroidプロジェクトが同じAPIレベルで動作しています。私が使用しています他にAndroidでSQLiteで行を更新するための適切な構文

db.update(DATABASE_TABLE, updateValues, KEY_ROWID + "=" + rowId, null); 

db.update(DATABASE_TABLE, updateValues, FIELD_COLLECTION_ID + "=?", new String[] {collectionId}); 

彼らは両方の仕事1では、私が使用していますSQLiteの行を更新します。 2番目のプロジェクトでは、最初のものと一致するように構文を変更した場合(つまり、where句から疑問符を削除し、whereArgsをnullに設定した場合)、0行が返されます。これには理由がありますか?私はSQLインジェクションの可能性を減らすので、2番目のシンタックスに固執しようと考えていましたが、私はそこにこのオブジェクトを投げ込み、誰かが同じような経験をしているかどうかを確かめました。

また興味深いのは、ドキュメントがそのちょうどそこに、whereArgsが何のためにあるのかを指定していないということです:あなたは疑問符を削除するとSQLiteDatabase:update()

答えて

0

、あなたはcollectionIdの値とを交換しますか?

第2の構文は、呼び出されるたびに完全に異なるクエリを使用するのではなく、rowIdまたはcollectionIdの任意の数の異なる値に対して同じクエリのキャッシュされたコピーをSQLiteが再利用できることを意味します。たくさんのリソースを節約します。

関連する問題