存储整个行的数据,Android SQLite

时间:2018-01-05 02:05:22

标签: java android sql database sqlite

所以我有一个方法允许我通过使用SQL数据库中已有的名称来获取某个项目的id。我如何获取整行信息并将每个项目存储在自己的变量中。

仅适用于ID

的方法
public Cursor getID(String name){
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    String query = " SELECT " + COL1 + " FROM " + TABLE_NAME + " WHERE " + COL2 + " = '" + name + "'";
    Cursor data = sqLiteDatabase.rawQuery(query, null);
    return data;
}

获取查询并存储结果的方法

Cursor data = mydb2.getID(name);
            int itemId= -1;
            while(data.moveToNext()){
                itemId = data.getInt(0);
            }

使用下面的方法,我将如何使用此方法(或以任何其他方式获取整行的数据)将所有数据存储在自己的变量中。

public Cursor rowData(String name){
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    String query = " SELECT * FROM " + TABLE_NAME + " WHERE " + COL2 + " = '" + name + "'";
    Cursor data = sqLiteDatabase.rawQuery(query, null);
    return data;
}

我知道这可能是一个愚蠢的问题,我已经尝试过查看其他问题,我已经做到了这一点,我只是不知道下一步该做什么(我对Sq Lite数据库来说很陌生)和Android开发)

1 个答案:

答案 0 :(得分:0)

你会使用类似的东西: -

    Cursor csr = instance_of_yourdbhelper.rowData();
    while(csr.moveToNext()) {
        long thisItemId = csr.getLong(csr.getColumnIndex(yourdbhelper.COL_1));
        String thisName = csr.getString(csr.getColumnIndex(yourdbhelper.COL_2));
        // etc for other columns
    }

备注

  • yourdbhelper 是DatabaseHelper的类,它是扩展SQLiteOpenHelper的类(假设上述方法来自这样的类,因为这是SQLite的常见用法)

  • instance_of_yourdbhelper 是DatabaseHelper类的实例,即您可能有yourdbhelper dbhlpr = new yourdbhelper(parameters);,在这种情况下, dbhlpr 就是实例。

  • 这只会覆盖游标中每一行的相同变量(thisItemId和thisName),尽管rowData方法可能只返回一行。

  • 使用 getColumnIndex 方法可能会遇到更少的错误,因为它会根据列名返回偏移量。 计算错误是导致问题的常见原因。

  • 您可能希望处理无行返回的情况,在这种情况下您可以使用cursor.getCount(),这将返回游标中的行数。