如何获取所有单列值,然后将其传递给字符串[]



我在这里遇到了一个大问题。我创建数据库Helper类来处理所有查询功能。现在,我尝试制作一个函数,该函数将加载数据库中的所有列值,但我不知道该怎么做。仅供参考,我在数据库表中有3列。到目前为止,这是我的代码:

(更新,它有效并现在给我值)

public List<Content> getSearchKeys() {
    List<Content> contentList = new ArrayList<Content>();
    // The query
    String selectQuery = "SELECT  * FROM " + TABLE_SEARCH;
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    // I use do.. while here and it works now, should I better use for loop?
    if (cursor.moveToFirst()) {
        do {
            Content content = new Content();
            content.setID(Integer.parseInt(cursor.getString(0)));
            content.setsKeys(cursor.getString(1));
            content.setAct(cursor.getString(2));
            // Adding content to list
            contentList.add(content);
        } while (cursor.moveToNext());
    }
    // return content list
    return contentList;
}

现在的问题是如何将上述函数的结果传递到字符串[]?在我的活动中,我尝试这样使用它,但它不起作用:

(更新)

...
setContentView(R.layout.page_search);
    DatabaseHandler db = new DatabaseHandler(this);
    List<Content> contents = db.getAllContacts(); 
    final String[] searchQ = new String[contents.size()];
    int i =0;
      for (Content cn : contents) {
            searchQ[i] = cn.getsKeys().toString(); 
      }
      final String[] SearchQueries = searchQ;

如果我评论上面的代码并将其更改为类似的字符串数组,则有效:

static final String[] SearchQueries = new String[] { "iPhone", "Mac", "Apple",};

我的目的是将上面的数组替换为我从数据库中检索的数组。那么怎么了,处理此问题的正确方法是什么?非常感谢您的帮助。

问题1:如果光标为空而不是空,则循环失败(将其更改为ther loop)

问题2:要转换为字符串,您需要在Content类中使用toString方法。然后,您将编写一个循环:

String[] queryAsStrings = new String[query.size()];
int i = 0;
for (Content c : query) {
  queryAsStrings[i] = c.toString();
}

最新更新