我在这里遇到了一个大问题。我创建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",};
我的目标是将上面的数组替换为我从数据库中检索的数组。那么什么是错的,处理这个问题的正确方法是什么?非常感谢你的帮助。
答案 0 :(得分:1)
问题1:如果游标为空但不为null,则do while循环失败(将其更改为while循环)
问题2:要转换为字符串,您需要在toString
课程中使用Content
方法。然后你会写一个循环:
String[] queryAsStrings = new String[query.size()];
int i = 0;
for (Content c : query) {
queryAsStrings[i] = c.toString();
}