【问题标题】:Storing data from an entire row, Android SQLite存储整行数据,Android SQLite
【发布时间】:2018-01-05 02:05:22
【问题描述】:

所以我有一个方法允许我通过使用我在 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 开发非常陌生)

【问题讨论】:

  • 所以要澄清的问题是我如何为整行创建类似于第二个 sn-p 代码的东西。
  • 老兄,你应该使用 Realm,太棒了!
  • @Remario 看起来真的很酷!我可能会在这个项目之后检查一下,这样我就可以重新开始使用 Realm

标签: java android sql database sqlite


【解决方案1】:

你会使用类似的东西:-

    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(),它将返回游标中的行数。

【讨论】:

  • 感谢您的回复,我想这正是我所需要的!
猜你喜欢
  • 2019-05-30
  • 2010-12-20
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多