1

私はアンドロイドでsqliteを学んでいます。今日、データベースで特定のエントリを見つけて返すためのコードに出くわしました(ユーザーに表示するため)。コードで何が起こっているのか少し混乱しています。最初にプログラマーは query メソッドを呼び出し、次にカーソルを最初の行に移動します。

なぜ彼は moveTofirst() メソッドを呼び出したのですか? このメソッドはカーソルをデータベースの先頭に置き、クエリ メソッドが返したものを失うことになりませんか。

Cursor c = database.query(TABLE_NAME,columns, NAME_COL+ "="+ findname, null,null,null,null);

if(c!=null)
{
   c.moveToFirst();
   name= c.getString(1);
   return name;
}

よろしく。

4

4 に答える 4

1

クエリを作成すると、オブジェクトに「カプセル化」されたすべての結果が返されCursorます。このカーソルには、要求したすべての行が含まれていますが、データベース全体ではありません!!

結果を表示するには、含まれる行を介してカーソルを移動する必要があります。クエリの直後、カーソルは何も指していません。呼び出しmoveToFirst()て、クエリの結果の最初の行を指す Cursor を作成します。

また、質問のこの回答で述べたように、一部の結果が実際に返されたかどうかをテストすることもできます。

于 2013-06-26T12:53:32.380 に答える