我的SQLite查询只返回一条记录,但是,该表有多行
cursor=mydb.rawQuery("Select category from items;", null);
我甚至试过GROUP BY
但仍然无法工作。
我是SQLite的新手,非常感谢任何帮助。感谢。
答案 0 :(得分:7)
首先,不得终止您的字符串查询,而不是将其作为:
传递"Select category from items;"
你应该尝试将其传递为:
"Select category from items"
如this page所述。
另外,你是否在光标上循环?以下是如何使用while循环从游标中获取数据的示例:
ArrayList<String> results = new ArrayList<String>()
while (cursor.moveNext()) {
results.add(cursor.getString(0)); // 0 is the first column
}
答案 1 :(得分:4)
首先,搜索:
Cursor cs = myDataBase.rawQuery("Your query", null);
if (cs.moveToFirst()) {
String a = cs.getString(cs.getColumnIndex("your_column_name"));
cs.close();
return a;
}
cs.close();
return "";
从光标获取信息:
if (cs.moveToFirst()) {
ArrayList<String> results = new ArrayList<String>()
do {
results.add(cs.getString(cs.getColumnIndex("your_column_name")));
} while (cs.moveNext());
}
没有if,我在我的项目中犯了错误。但这对我有用。顺便说一下,你的查询看起来不太好。如果您提供有关数据库的一些信息,我们可以提供更多帮助。
答案 2 :(得分:2)
使用此选项从表格中选择所有项目:
Cursor cursor = db.rawQuery(&#34; SELECT * FROM Tablename, 空);
答案 3 :(得分:1)
这可以帮到你
public ArrayList<mydata> getallContents() {
ArrayList<mydata> lst = new ArrayList<mydata>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery("select * from " + GAMETABLE, null);
if (c.moveToFirst()) {
do {
lst.add(new mydata(c.getString(1),
c.getString(3),c.getString(4),c.getString(5),c.getString(6)));
} while (c.moveToNext());
}
db.close();
return lst;
}
答案 4 :(得分:0)
您不需要原始查询方法。我认为在这种情况下android方式更好:
db.query(items, category, null, null, null, null, null);
比使用光标已经在另一条评论中写入的内容。