Cursor
Androidでの実装の詳細に興味があります。基本的には、データベースクエリによって返される結果セットへのランダムな読み取り/書き込みアクセスを提供するインターフェイスにすぎないことを私は知っています。Cursor
私は特定の実装について疑問に思います:
- データベースからの結果セットを格納するある種のデータ構造ですか?
- それとも、1行だけを処理する構造ですか?
Cursor
Androidでの実装の詳細に興味があります。基本的には、データベースクエリによって返される結果セットへのランダムな読み取り/書き込みアクセスを提供するインターフェイスにすぎないことを私は知っています。Cursor
私は特定の実装について疑問に思います:
データベースからの結果セットを格納するデータ構造です
はい。
それとも、1行だけを処理する構造ですか?
ではない正確に。カーソルは、ソースクエリに基づいて1つ以上の行を処理できます。カーソルはデータのマップであり、source(select)クエリが返すのと同じ数の行が含まれます。したがって、クエリが100行を返す場合、これらの行はカーソルに挿入され、カーソルにはこれらの100行が含まれます。
カーソルは、データが「行」として配置される動的サイズ(リストと同様)のデータのマップとして想像できます。各行には独自の行ID(行番号、ポインタと言えます)があり、カーソルに挿入されると徐々に生成され、この番号の行間を簡単に移動できます。暗黙的に、各カーソルには最初の行(-1の位置)の前に「実際のポインタ」が配置されているため、呼び出すc.getString(0)
と、取得するものがないため、期待値がスローされます。
したがって、常にcursor.moveToFirst()
そのprepare Cursorを呼び出して読み取る必要があり、空の場合、行がないため、メソッドはfalseを返します。