【问题标题】:Exception Invalid Limit Clauses - Android异常无效限制条款 - Android
【发布时间】:2017-02-13 18:59:28
【问题描述】:

我正在尝试将 json 对象放入 sqlite 数据库中

private void addList(String info){
    try {        
        JSONObject reader=new JSONObject(info);

        String COMMAND = reader.getString("COMMAND");
        String PARAMS = reader.getString("PARAMS");

        int id = vpictures.InsertList(COMMAND,info);

    } catch (Exception e){
        if (DEBUG_FLAG)Log.d("Log1 ", "adding Exception :"+ e.getMessage());
    }
    return;
}

json 对象info 长这样

{
    "COMMAND":"ADD_NEW",
    "PARAMS":{
        "deviceID":"1234",
        "custID":"41701",
        "description":"Ddd",        
        "colTranType":"ABS",        
        }
}

这是我的 sqlite 表

private static final String TABLE_CREATE = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER, DEVICEID TEXT, LTIME INTEGER, LATITUDE REAL,"+
        "LONGITUDE REAL, THEPICTURE BLOB, SENT INTEGER, NOTES TEXT, COMMAND TEXT, PARAMS TEXT);";

我正在尝试插入 COMMANDPARAMS。 我的sqlite代码看起来像这样

public int InsertList(String COMMAND, String info){

        try {

            JSONObject reader = new JSONObject(info);
            String param_str = reader.getString("info");

            if (_Db == null)
                _Db = getWritableDatabase();

            if (_LastId == -1)
            {
                Cursor c = _Db.query(TABLE_NAME, new String[] {"max(ID)"}, null, null, null, null, COMMAND, param_str);
                if (c != null && c.moveToFirst()) {
                    _LastId = c.getInt(0);
                    c.close();
                }
                else
                    _LastId = 0;
                c.close();
            }

            try {

                ContentValues cv = new ContentValues();
                cv.put("ID",++_LastId);

                cv.put("COMMAND",String.valueOf(COMMAND));
                cv.put("PARAMS",PARAMS);          

                _Db.insert(TABLE_NAME, "", cv);
            } catch (Exception e){
                Log.d("Log2","Error:"+e.getMessage());
            }          

        } catch (JSONException e1) {            
            Log.d("Log2","Error:"+e1.getMessage());
        }

         return _LastId;

 }

基本上是我从addList 函数得到的异常

adding Exception : Exception invalid LIMIT clauses

如何考虑将json对象插入sqlite

【问题讨论】:

    标签: android json sqlite exception-handling


    【解决方案1】:

    这些是query()方法的参数:

    Cursor c = _Db.query(
            TABLE_NAME,               // table
            new String[] {"max(ID)"}, // columns
            null,                     // selection
            null,                     // selectionArgs
            null,                     // groupBy
            null,                     // having
            COMMAND,                  // orderBy
            param_str);               // limit
    

    orderBylimit 参数没有意义。要查找整个表中最大的ID,这些参数必须是null

    无论如何,有一个helper function 可以更轻松地从数据库中读取单个数字,而无需使用游标:

    long lastID = DatabaseUtils.longForQuery(_Db, "SELECT max(ID) FROM "+TABLE_NAME, null);
    

    如果您将ID 列声明为INTEGER PRIMARY KEY,它将自动递增,您不必手动设置。

    【讨论】:

      猜你喜欢
      • 2013-06-06
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 2018-02-05
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多