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