代码之家  ›  专栏  ›  技术社区  ›  Michaël BadZen

用光标获取字段值

  •  29
  • Michaël BadZen  · 技术社区  · 16 年前

    我正在创建一个应用程序,但在 Cursor . 我有一个 SQLiteDatabase 那就给我一个 光标 当我尝试使用此函数获取值时:

    public Cursor fetchOption(long rowId) throws SQLException {
    
        Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
            KEY_TITLE, KEY_BODY}, KEY_ROWID + "=" + rowId, null,
            null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    
    }
    

    我不知道如何在 光标 . 如果我这样做:

    String a = mOptionDb.fetchOption(0).getColumnName(0).toString();
    String b = mOptionDb.fetchOption(0).getColumnName(1).toString();
    String c = mOptionDb.fetchOption(0).getColumnName(2).toString();
    

    我只得到列的名称( _id, title, body )但不是价值观。关于如何实现这一点有什么建议吗?

    3 回复  |  直到 8 年前
        1
  •  86
  •   Mariano Kamp    16 年前

    我想你可以忘记检查空值。

    而是检查是否有数据,然后使用光标访问列:

    Cursor cursor = fetchOption(0);
    
    if (cursor.moveToFirst()) // data?
       System.out.println(cursor.getString(cursor.getColumnIndex("title")); 
    
    cursor.close(); // that's important too, otherwise you're gonna leak cursors
    

    阅读Android教程也可能有意义。记事本教程似乎符合以下条件: http://developer.android.com/guide/tutorials/notepad/index.html

        2
  •  15
  •   Josef Pfleger    16 年前

    你可以使用 Cursor get* 从结果中检索值的方法:

    long id = cursor.getLong(cursor.getColumnIndex("_id"));
    long title = cursor.getString(cursor.getColumnIndex("title"));
    ...
    

    更好的做法显然是使用常量(通常由ContentProviders提供)而不是调用 getColumnIndex 带硬编码字符串。

        3
  •  7
  •   Michaël BadZen    12 年前

    你可以使用这个机制。

    Cursor record=db.test(finalDate);     
    if(record.getCount()!=0){
        if(record.moveToFirst()){
            do{               
                Imgid1=record.getString(record.getColumnIndex(Database.PHOTO));                
            }while(record.moveToNext());                          
        } 
        record.close();        
    }