我想在我的 Android 应用程序中做的是使用 ROWID 从一行中加载所有值并将它们放入数组中。例如:
Cursor cursor = db.rawQuery("SELECT * FROM Dairy WHERE ROWID = 1", null);
这将返回第 1 行的所有值:51、35、63。但是,这总是只返回第一个值,在本例中为 51。此外,cursor.getCount()
总是返回1.
这是我的完整代码:
db = getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM Dairy WHERE ROWID = 1", null);
yData = new int[cursor.getCount()];
if (cursor.moveToFirst()) {
for (int i = 0; i < cursor.getCount(); i++) {
yData[i] = cursor.getInt(0);
cursor.moveToNext();
}
cursor.close();
}
db.close();
最佳答案
如果我理解正确,您需要返回单行中每一列的值。由于您只选择单行并希望从每一列中获取值,因此您只需要获取每一列的索引。然后遍历它们。这是如何完成的代码。
Cursor cursor = db.rawQuery("SELECT * FROM Dairy WHERE ROWID = 1 Limit 1", null);
if (cursor.moveToFirst()) {
String[] columnNames = cursor.getColumnNames();
yData = new int[columnNames.length];
for (int i = 0; i < columnNames.length; i++) {
// Assume every column is int
yData[i] = cursor.getInt(cursor.getColumnIndex(columnNames[i]));
}
}
cursor.close();
db.close();
关于android - 在 Android 中使用 rawQuery 和 rowid 从 sqlite 数据库中选择一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33187154/