SQLiteDataBase オブジェクトから返された Cursor があります。getXXX() を使用して、カーソルから列の内容を取得できます。私の場合、メソッドを使用してカーソル内のデータを「更新」したいのですが、メソッドsetXXX()
がないことはわかっています。setXXX()
しかし、この機能を持つCursorWindowオブジェクトがありますが、私はそれを使用できません
2 に答える
カーソルを変更することはできません。
できることは、データベースを更新してからreQuery()
メソッドを使用することです。
// code to update your db
cursor.requery();
編集
さらなる調査により、明らかに私が間違っていることが示されています。あなたはやりたいことをすることができますが、それはかなりの作業です(いいえ、試していません。カーソルを再クエリするだけです)。
フォーラムでこれを見つけました(Google検索を使用):
SQLiteDatabase.CursorFactory をサブクラス化して、その newCursor メソッドから SQLiteCursor のサブクラスを返すことができます。このファクトリは SQLiteOpenHelper コンストラクターに渡されるため、クエリを実行すると、新しい SQLiteCursor サブクラス タイプの Cursors が返されます。その後、SQLiteCursor サブクラスは、CursorWindow である保護された mWindow フィールドを管理するメソッドを公開できます。このオブジェクトには、データを操作する putXxx メソッドがあります。
によって返される値は変更できませんCursor
。データベースを更新する必要があるため、返されたカーソルが指す値を変更するか、getXXX を使用して取得した値を他の変数にコピーします。