我想返回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");
感谢您的帮助!
答案 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