Selecting one row from sqlite database using rawQuery and rowid in Android

Chi*_*one 2 sqlite android rowid

I've created an external SQLite database that looks something like this:在此处输入图片说明

我要在Android应用程序中执行的操作是使用ROWID从一行加载所有值并将它们放入数组。例如:

Cursor cursor = db.rawQuery("SELECT * FROM Dairy WHERE ROWID = 1", null);
Run Code Online (Sandbox Code Playgroud)

这将返回行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();
Run Code Online (Sandbox Code Playgroud)

感谢帮助。

Pro*_*ver 5

如果我正确理解,则需要返回单行中每一列的值。由于您仅选择单行,并且希望从每一列中获取价值,因此只需要获取每一列的索引即可。然后遍历它们。这是代码如何完成的。

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();
Run Code Online (Sandbox Code Playgroud)