Android SQL查询转换为数组

Android SQL查询转换为数组,android,Android,你好,我是android新手,我真的需要一些帮助。我在sqlitehelper类中得到了一个预填充数据库,我需要一个查询请求返回一个String[]表。 示例我的数据库得到了3列id、name、tel。我的查询将基于id,因此光标将得到{1 mary 2134}。我希望将其转换为字符串[1 mary 2134]。不知道这是否有帮助,但我的所有请求都将返回一行,因为查询是基于主键的。 我的代码是这样的: public String[] getSingleRow(String id){

你好,我是android新手,我真的需要一些帮助。我在sqlitehelper类中得到了一个预填充数据库,我需要一个查询请求返回一个String[]表。 示例我的数据库得到了3列id、name、tel。我的查询将基于id,因此光标将得到{1 mary 2134}。我希望将其转换为字符串[1 mary 2134]。不知道这是否有帮助,但我的所有请求都将返回一行,因为查询是基于主键的。
我的代码是这样的:

   public String[] getSingleRow(String id){
    String[] asColumnsToReturn = new String[] { COLUMN_ID,COLUMN_NAME, COLUMN_TELEPHONE}
    Cursor cursor = this.dbSqlite.query(TABLE_NAME, asColumnsToReturn, COLUMN_ID + "=" + id, null, null, null, null);


    //here is where i need help
    String table[]=new String[2];
    int i = 0;

                while (i < table.length) {
                table[i]  = cursor.getString(i);
                i++;
                cursor.moveToNext();
                }
                cursor.close();
return table;
  }

所以我的问题是,在使用游标之前,如何将返回的单行查询转换为字符串[]

,您必须先调用
cursor.moveToFirst()
。在while循环之前调用它。

您似乎对光标是什么感到困惑

光标指向结果响应中的一行。因此,如果您的表如下所示:

1 | Mary | 1234
2 | Alice | 134
3 | Bob | 123
在调用cursor.movetoNext()之前,光标一次只能指向其中一行。在单行结果中,您的游标显然永远不必使用该方法

当然,如果您想要一行,而不是像您的变量命名的表:

cursor.moveToFirst();
String row[] = new String[3]
row[0] = cursor.getString(0);
row[1] = cursor.getString(1);
row[2] = cursor.getString(2);
return row;
此外,我还建议对列使用常量:

//declared somewhere as public static final String KEY_NAME = "name";
cursor.getString(cursor.getColumnIndexByName(KEY_NAME));

哇,太快了。。。谢谢,这正是我想要的,我只是把它放在一个for循环中,效果很好
//declared somewhere as public static final String KEY_NAME = "name";
cursor.getString(cursor.getColumnIndexByName(KEY_NAME));