android - 在 Android 中使用 rawQuery 和 rowid 从 sqlite 数据库中选择一行

标签 android sqlite rowid

我已经创建了一个看起来像这样的外部 SQLite 数据库:image of a few rows of a database

我想在我的 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/

相关文章:

Android:带 CheckBox 的 ListView,从 SQLite 数据库填充不太工作

database - ROWID (oracle) - 它有什么用吗?

android - 无法在 Android Studio 中运行模拟器

android - 如何将其他 Intent 值传递给 ACTION_OPEN_DOCUMENT_TREE Intent

database - Google Chrome 应用程序的 Google Chrome 数据库的大小限制是多少?

mysql - Rails 迁移错误 - SQLite 数据库无法删除或添加列

sql - 什么是 rowID & rowNum (ROWID vs ROWNUM)

javascript - 使用 jQuery 禁用表列的所有控件

android - 它是否允许在 Android SQLite 中一次创建多个事务

android - 如何使用 Uri 对象打开现有的 SQLite 数据库?