在Android中返回SQLite值

时间:2015-03-24 23:26:33

标签: android sqlite

我想返回sqlite insert的值。在我的代码中,当插入操作失败时返回-1(API sqlite说:“新插入行的行ID,如果发生错误则返回-1”)。问题是插入总是失败,我在代码中收到其他值。

//Function in my class DAtabase
    public int insert(HashMap<String, String> queryValues,String table) {
            SQLiteDatabase database = this.getWritableDatabase();
            ContentValues values = new ContentValues();
            long result = 0;
            switch (table) {

            case "Log":
                values.put("relacion", queryValues.get("relacion"));
                values.put("objetoPadre", queryValues.get("objetoPadre"));
                values.put("objeto", queryValues.get("objeto"));
                values.put("interaccion", queryValues.get("interaccion"));
                values.put("tiempo", queryValues.get("tiempo"));
                values.put("sincro", queryValues.get("sincro"));
                result=database.insert("Log", null, values);    
                database.close();
                System.out.println("Value:"result);
                return (int) result;//result here is -1
            case "Conf_spinner":
                values.put("relacion",queryValues.get("relacion"));
                values.put("interaccion",queryValues.get("interaccion"));
    result=database.insert("Conf_spinner", null, values);
                database.close();
                System.out.println("Value:"result);//result here is -1
                return (int) result;

            default:
                database.close();
                return 1;
                break;
            }
        }

如果插入失败或其他情况下的其他值,则此部分代码返回-1。

这是我的代码:

//Code of my android activiy
    int value = myDatabase.insert(queryValues, "Conf_spinner");

    if(value==-1) //value always set other number that isn't -1.
       showMessaging();
    else
    Log.e("MyTag","FAIL INSERCION");

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

普通插入方法不会告诉您发生了什么异常,因此我建议您将标志设置为调试模式

private final static boolean debug_mode = true;

当你插入案件时:

if(debug_mode){

    // this method will throw clear exception so you can handle 
    result=database.insertOrThrow("Log", null, values); 
  } else{

     result=database.insert("Log", null, values);
  }

当你处理异常时,你选择将debug_mode返回false