Android-使用游标从数据库表中获取单个值

时间:2012-02-24 18:35:59

标签: android android-cursor

我正在使用游标从数据库中检索数据。我知道如何检索整个列以用于listviews等,但我很难找到一种方法来检索单个值。

假设我有一个包含两列(“_id”和“Name”)的表,我在该表中有十个记录(行)。例如,我如何得到第三行中的名字?考虑到我定义了一个读取该表的游标:

public Cursor getMyNameInfo() {

    SQLiteDatabase db = getReadableDatabase();
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();


    String sqlTables = "MyNames";
    qb.setTables(sqlTables);
    Cursor c = qb.query(db, null, null, null,
            null, null, null);  

    c.moveToFirst();
    return c;
    }

4 个答案:

答案 0 :(得分:7)

而不是c.moveToFirst()使用c.moveToPosition(2)Cursor索引从零开始,因此'2'是第三条记录。)

请务必先检查Cursor是否有有效数据。

修改

如上所述,将光标移动到第3条记录后,请使用以下内容获取“名称”列的值。

String theName = c.getString(getColumnIndex("Name"));

答案 1 :(得分:1)

Cursor cursor = dbHelper.getdata();

        System.out.println("colo" + cursor.getColumnCount() + ""
                + cursor.getCount());

        cursor.moveToFirst();

        if (cursor != null) {

            while (cursor.isAfterLast() == false) {

                String chktitle = title.trim().toString();
                String str = cursor.getString(cursor.getColumnIndex("title"));

                System.out.println("title :: "
                        + cursor.getString(cursor.getColumnIndex("title")));
                System.out.println("date :: "
                        + cursor.getString(cursor.getColumnIndex("date")));
                System.out.println("desc :: "
                        + cursor.getString(cursor.getColumnIndex("desc")));

                if (chktitle.equals(str) == true) {
                    tvAddfavorite.setText("Remove Favorite");
                    break;
                }
                cursor.moveToNext();
            }
        }
        cursor.close();

答案 2 :(得分:1)

添加WHERE子句:

qb.appendWhere("_id = 2");

答案 3 :(得分:1)

由于上面的答案,我创建了以下方法,以便从另一列但同一行中提供项目的值。

public String getValueFromColumn(int position, String tableName, String columnToGetValueFrom) {

    SQLiteDatabase db = getReadableDatabase();
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

    qb.setTables(tableName);
    Cursor c = qb.query(db, null, null, null,
            null, null, null);

    c.moveToPosition(position);
    String neededValue = c.getString(c.getColumnIndex(columnToGetValueFrom));
    return neededValue;
}

希望它可以帮助任何人。