android SQLite数据库java.lang.IllegalStateException?

时间:2014-10-21 05:47:04

标签: android

您好我正在为我的应用程序使用SQlite数据库。 我想检索增量主键的最大值,即ROWID。 但是当我为此写查询时,我得到了这个例外

   10-21 11:02:50.062: D/IllegalStateException(2575): java.lang.IllegalStateException: get field             slot from row 0 col -1 failed

我检索最大值的方法是

  public String getMaxID(){
  SQLiteDatabase db = this.getReadableDatabase();
  String productName = SingleTonClass.getInstance().dummy_productname;
  String QUERY = "SELECT max("+ROW_ID+") as ID FROM "+TABLE_NAME
        +" where "+PRODUCT_NAME+ " = " + "'" +productName+ "'";
    Log.d("Query for Get previous cost", ""+QUERY);
  Cursor maxID = db.rawQuery(QUERY, null);

   String max = null;
   int temp = 1;
   try{

    while(maxID.moveToNext()){

        max = maxID.getString(maxID.getColumnIndex(ROW_ID));
        Log.d("MaxID", ""+max);
        maxID.close();


        }
     // }

     //      return max;
    }catch(IllegalStateException e){
    Log.d("IllegalStateException", ""+e);
   }finally{
    //      maxID.close();
    /       db.close();
    }

   return max;

   }

请帮帮我。 感谢。

2 个答案:

答案 0 :(得分:0)

问题在这里

max = maxID.getString(maxID.getColumnIndex(ROW_ID));

更改为

max = maxID.getString(maxID.getColumnIndex("ID"));

答案 1 :(得分:0)

您正试图获取此专栏:

max = maxID.getString(maxID.getColumnIndex(ROW_ID));

但在您的查询中,您使用的是别名:

"max("+ROW_ID+") as ID"

尝试执行以下操作:

max = maxID.getString(maxID.getColumnIndex("ID")));

希望有所帮助