使用SQLiteDatabase.rawQuery返回Integers列表

时间:2018-05-04 09:56:52

标签: sqlite

我试图编写一个使用SQLiteDatabase.rawQuery返回整数列表的函数。 这就是我想象它但不起作用的方式..

public List<Integer> queryInt(String sql, String[] whereArgs){
    //fetch string array
    List<Integer> r = new ArrayList<Integer> ();
    SQLiteDatabase db = getReadableDatabase();
    Cursor c = db.rawQuery(
            sql,
            whereArgs
    );
    return c.toInt(); //something that does this
}

如果有人有线索,谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

您需要在Cursor中移动才能访问任何数据(最初Cursor将位于第一行(位置-1)之前)。

因此,您的devise_for :admins mount RailsAdmin::Engine => '/admin', as: 'rails_admin' 方法可能是: -

queryInt
  • 注意 0 假定要从第一列中提取数据。但是,更好的做法是不对列偏移进行硬编码,而是根据列名称获取列偏移量,因此建议使用public List<Integer> queryInt(String sql, String[] whereArgs){ //fetch string array List<Integer> r = new ArrayList<>(); SQLiteDatabase db = getReadableDatabase(); Cursor c = db.rawQuery( sql, whereArgs ); // Loop through the Cursor while(c.moveToNext()) { r.add(c.getInt(0)); //<<<< see note } c.close(); //<<<< Should always close a Cursor when done with it. return r; }
  • 如果没有行,则上面会返回一个空的List,因此您可能需要检查返回的List的大小。