0

您好,我是 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;
  }

我需要它,所以在我的主课中我可以设置 textview 如下:

TextView myTextView = (TextView)findViewById(R.id.textView1);
Table= SQLiteHelper.getSingleRow(id);
myTextView.setText(Table[0]); // "0"for id "1" for name and "2" for telephone 

所以我的问题是如何将单行返回的查询转换为 String[]

4

2 回答 2

0

在您可以使用光标之前,您必须先调用cursor.moveToFirst()。在你的 while 循环之前调用它。

于 2012-04-06T22:00:28.243 回答
0

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

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

1 | Mary | 1234
2 | Alice | 134
3 | Bob | 123

在调用 cursor.movetoNext() 之前,游标一次只能指向这些行之一。在单行结果中,您的游标显然永远不必使用该方法。

当然,如果您想要一个 ROW 而不是像您的变量那样命名的 TABLE:

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));
于 2012-04-06T22:05:13.227 回答