Android sqlite 值必须≥ 0 但 getColumnIndex 可以为-1 如何修复?

问题描述 投票:0回答:1

_stringVal = 游标.getString(游标.getColumnIndex(KEY_QTY));这个光标sqlite出现数据错误显示如何修复错误image

 public String CheckOrderExists(long recipe_id) {

    String _stringVal = "0";
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_ADDCART + " WHERE " + KEY_RECIPE_ID+ " = ?", new String[]{String.valueOf(recipe_id)});
    if (cursor.moveToFirst()) {
        _stringVal = cursor.getString(cursor.getColumnIndex(KEY_QTY));
        if (_stringVal.equals("0")) {
            db.execSQL("DELETE FROM " + TABLE_ADDCART + " WHERE " + KEY_RECIPE_ID+" = ?" , new String[]{String.valueOf(recipe_id)});

        }
    }
    cursor.close();
    db.close();

    return _stringVal;
}
android sqlite
1个回答
0
投票

在您的代码中,您有以下行:

cursor.getString(cursor.getColumnIndex(KEY_QTY));

基于文档,方法 getColumnIndex:

返回给定列名的从零开始的索引,如果是则返回 -1 列不存在。如果您希望该列存在,请使用 getColumnIndexOrThrow(java.lang.String) 相反,这将使 错误更清楚。

要解决此问题,您有两种选择:

  1. 检查该方法接收到的列索引是否为-1
  2. 使用 getColumnIndexOrThrow 但请记住,您必须将其包装在 try/catch 块中,因为如果列不存在,使用此方法可能会抛出 IllegalArgumentException
© www.soinside.com 2019 - 2024. All rights reserved.