2011-07-21 6 views
3

これはデータベースを初めて使用したときのことですが、これがどのように機能するかはわかりません。私はデータベースを作って、カーソルを返すクエリを作った。そして今何?本当にカーソルとは何ですか?私はちょうど私のデータをナビゲートするためにそれを使うことができますか、それをArrayListまたはListActivityに置く必要がありますか?SQLiteクエリの後にCursorを使用するとどうなりますか?

cursor.next(); 

そして、あなたが使用して探している場所にデータをつかむ:あなたはのようなものを使用してクエリの戻りを繰り返し処理できるように

答えて

6

あなたが必要結果を得るためにカーソルを繰り返します。

cursor.moveToFirst()および/またはcursor.moveToNext()(whileループを使用)を使用してください。次に、cursor.getInt()またはcursor.getString()のようなgetX()メソッドを使用できます。

例えば、IR、あなたはあなたのクエリから1件の結果を期待されています

if (cursor.moveToFirst()) { 
    String name = cursor.getString(cursor.getColumnIndex('NAME')); 
    int age = cursor.getInt(cursor.getColumnIndex('AGE')); 
} else { 
    // oops nothing found! 
} 
+0

うこれはデータベース内のレコードの数を確認する最も良い方法ですか? – NoBugs

+0

いいえ、カウントを使用してください。 – aromero

2

ファーストコールcursor.moveToFirstを()。 cursor.moveToNext()を呼び出すたびに、次の行に移動します。あなたがあなたのカーソルで終わったときにあなたがcursor.deactivate()を呼び出すことを確認してください。そうしないと、あなたのログcatにエラーが発生します。

0

Developer.android:このインターフェイスは、データベースクエリによって返される結果セットにランダムな読み書きアクセスを提供します。

つまり、クエリは、カーソルによって表される一連のデータを返します。まず、有効なカーソル(nullでない)が得られていることを確認し、データセット内の目的の位置に移動しようとします(moveToXXXメソッドを使用してください)。カーソルが指すデータを取得するには、getXXXメソッドを使用します。それを使用し終わったら、closeを呼び出してリソースを解放してください。

1

返さカーソルインスタンスを反復

public List<Object[]> cursorToTableRows(Cursor cursor) { 
     List<Object[]> result = new ArrayList<Object[]>(cursor.getCount()); 

     cursor.move(0); 
     cursor.moveToNext(); 
     while (cursor.isAfterLast() == false) { 
      Object[] tableRow = new Object[cursor.getColumnCount()]; 
      for(int i=0; i<cursor.getColumnNames().length; i++) { 
       int columnIndex = cursor.getColumnIndex(cursor.getColumnName(i)); 
       String columnValue = cursor.getString(columnIndex); 
       tableRow[i] = columnValue; 
      } 
      result.add(tableRow); 
      cursor.moveToNext(); 
     } 

     cursor.close(); 

     return result; 
    } 

そして所望のオブジェクトを作成します。

public List<Vehicle> getVehicles() { 
     List<Vehicle> vehicles = new ArrayList<Vehicle>(); 
     Cursor cursor = null; 
     List<Object[]> objects = cursorToTableRows(cursor); 
     for(Object[] row : objects) { 
      int i=0; 
      Vehicle vehicle = new Vehicle(row[i++].toString(), row[i++].toString())); 
      vehicles.add(vehicle) 
     } 
     return vehicles; 
    } 
0

あなたが正常にカーソルセットアップを持っていたら、あなたは通常、何らかの形でのビューにそれを表示したいと思います。

は、詳細については、以下の答えを見てみましたが、ご希望のXMLビューを使用して、新たに鋳造されカーソルをペアリングするカーソルアダプタを使用しての簡単な例:

https://stackoverflow.com/a/20532937/293280

関連する問題