0

运行查询游标后,保存这样的数据

1 - R. Robert
 1 - F. Ahmed
 2 - M. Rahman
 2 - T. Banik
 3 - L. Morison

我想通过特定的 id Like 1 获取数据,然后将其存储在数组中。我试过这个

String [] Names = null;
        cursor.moveToFirst();
        do{

            if(cursor.getString(cursor.getColumnIndexOrThrow("_id")).equalsIgnoreCase("1")){
                String namesAuth = cursor.getString(cursor.getColumnIndexOrThrow("NAME"));
                Names[cursor.getInt(cursor.getColumnIndexOrThrow("_id"))] = namesAuth;
            }
      }while(cursor.moveToNext());

我想要这样的格式 [R.Robert,F.Ahmed]。这可能吗 ?谢谢

4

2 回答 2

0

不要尝试过滤游标中的数据,而是使用所需的过滤器构造一个查询:

SQLiteDatabase db = getReadableDatabase();
String[] columns = new String[]{ /* Columns to include in the query */ };

    Cursor cursor = db.query(TABLE_NAME, columns,"_id=?", new String[]{"1"}, null, null, null);

然后只需遍历您的光标

   ArrayList<String> names = new ArrayList<String>();
   int columnIndex = cursor.getColumnIndexOrThrow("NAME");
   if (cursor.moveToFirst()) {
        do {
            names.add(cursor.getString(columnIndex);
        }while (cursor.moveToNext());
    }
于 2013-07-30T20:18:15.523 回答
0

这将不起作用,因为您必须使用长度初始化数组,并且该代码应该(?)导致NullPointerException.

您可以改为使用 anArrayList并将字符串添加到其中,如下所示。

    ArrayList<String> names = new ArrayList<String>();
    cursor.moveToFirst();
    do{

        if(cursor.getString(cursor.getColumnIndexOrThrow("_id")).equalsIgnoreCase("1")){
            String namesAuth = cursor.getString(cursor.getColumnIndexOrThrow("NAME"));
            names.add(namesAuth);
        }
  }while(cursor.moveToNext());
于 2013-07-30T20:19:48.310 回答