2011-12-29 18 views
4

Android/SQLiteでinsertWithOnConflict関数を使用して、データベースに既に存在する可能性のある値を挿入しています。値が存在する場合はAndroidのドキュメントによると、主キーが返されます。この機能を使用する場合、行がすでに存在する場合AndroidのinsertWithOnConflictが間違った値を返す

Returns 
the row ID of the newly inserted row OR the primary key of the existing row if 
the input param 'conflictAlgorithm' = CONFLICT_IGNORE OR -1 if any error 

はしかし、既存の主キーが返されません。代わりに、主キーが自動インクリメントされ、返されるIDの行にデータが挿入されていない場合でも、その値が返されます。

関数呼び出し自体は比較的簡単です:

name_id = db.insertWithOnConflict("names", null, name_values, SQLiteDatabase.CONFLICT_IGNORE); 

答えて

1

も私と一緒に起こりました。私はまた、それが私にも0を返すいくつかの奇妙なケースを見た。 APIレベルに問題があると思われます。 insertOrThrowに戻ってきて、それは私のために正式に働いています。

関連する問題