Cursor如何在android中运行

Spa*_*ost 1 java android cursor

我很难在我的程序中完全可视化'Cursor'功能.我有点得到它的主旨,但任何人都可以详细解释它的功能吗?

通过Cursor,我的意思是Cursor界面.我不能简单地理解它与任何事物所扮演的角色.

http://developer.android.com/reference/android/database/Cursor.html

Dan*_*ent 8

从SQLite数据库上的查询返回Cursor对象.它将返回查询返回的所有行.

假设您names在数据库数据库中调用了一个表,如下所示:

_id     _name
1       Space Ghost
2       Zorak
3       Moltar
4       Brak
Run Code Online (Sandbox Code Playgroud)

如果您想从此表中获取所有数据并使用它,您可以执行以下操作:

public HashMap<Integer, String> getNames(){

 HashMap<Integer, String> data = new HashMap<Integer, String>();

 try{
  SQLiteOpenHelper helper = new MyOpenDbHelper(context);
  SQLiteDatabase db = helper.getReadableDatabase();
  String selectQuery = "SELECT  * FROM names";
  Cursor cursor = db.rawQuery(selectQuery, null);
  if (cursor != null && cursor.moveToFirst()){ //make sure you got results, and move to first row
    do{
        int mID = cursor.getInt(0); //column 0 for the current row
        String mName = cursor.getString(1); //column 1 for the current row
        data.put(mID, mName);

      } while (cursor.moveToNext()); //move to next row in the query result

  }

 } catch (Exception ex) {
    Log.e("MyApp", ex.getMessage());
 } finally
 {
    if (cursor != null) {
       cursor.close();

    }
    if (db != null) {
        db.close();
    }

 }

return data;
}
Run Code Online (Sandbox Code Playgroud)

通常,您将创建自己的类来扩展SQLiteOpenHelper,如下所示:

public class MyOpenDbHelper extends SQLiteOpenHelper {
     //........
}
Run Code Online (Sandbox Code Playgroud)