【问题标题】:How to get all single column values then pass it to String[]?如何获取所有单列值然后将其传递给 String[]?
【发布时间】:2012-11-08 13:54:35
【问题描述】:

我在这里遇到了一个大问题。我创建了 databasehelper 类来处理我的所有查询功能。 现在我尝试创建一个函数,该函数将从我的数据库中加载列的所有值,但我不知道该怎么做。仅供参考,我的数据库表中有 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;
}

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

(更新)

...
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",};

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

【问题讨论】:

    标签: android database arrays string sqlite


    【解决方案1】:

    问题 1:如果 cursor 为空但不为 null,则 do while 循环失败(将其更改为 while 循环)

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

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

    【讨论】:

    • 感谢 MarvinLab,但我不明白。上面的 getAllKey 函数也不起作用。我需要一个适当的功能并对其进行测试以查看它是否正常工作。确认工作后,我可以继续转换。不幸的是,对于像我这样的新手来说,这似乎并不容易:/
    • Marvin 看看我上面更新的代码,我试着按照你说的做,但还是没有运气。你能帮我更多吗?感谢您的回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2020-06-24
    • 2023-03-22
    相关资源
    最近更新 更多