您好我有数据库SQLITE android
的问题请查看我的代码以供参考
当我要插入值时,它返回-1,我从调试中得知 这不是插入值所以告诉我有什么问题 我从列表视图中插入值。
public void add_device(String data,
ArrayList<HashMap<String, String>> jsonlist) {
try {
SQLiteDatabase db = this.getReadableDatabase();
// database = this.getWritableDatabase();
for (HashMap<String, String> map : jsonlist) {
ContentValues values = new ContentValues();
values.put(SAVE_COLUMN_NAME, data);
values.put(SAVE_COLUMN_KEY, map.get(SAVE_COLUMN_KEY));
values.put(SAVE_COLUMN_VALUE, map.get(SAVE_COLUMN_VALUE));
@SuppressWarnings("unused")
Long int1 = db.insert(SAVE_TABLE_NAME, null, values);
Log.i("insserted value ", int1 + "");
}
}
/*
* for(HashMap<String, String> map : mylist){ ContentValues cv = new
* ContentValues(); cv.put(FILE_NAME, map.get(FILE_NAME)); cv.put(DESC,
* map.get(DESC)); cv.put(UPLOADED_BY, map.get(DATE_UPLOADED));
* cv.put(ACTION, map.get(FILE_NAME)); cv.put(ID, map.get(ID));
* cv.put(FILE_URI, map.get(FILE_URI)); db.insert("tablename", null,
* cv); }
*/
catch (Exception e) {
// TODO: handle exception
}
}
提前致谢
答案 0 :(得分:2)
我猜测“-1”值来自你的Log.i(...)消息,所以-1是db.insert(...)调用的返回值。 -1表示发生了错误。
而不是使用insert,用户insertOrThrow(...)并查看异常以找出问题原因。
答案 1 :(得分:1)
-1。 这可能是由于违反了表属性(比如你插入的数据类型与表中列的类型之间的冲突,是“key”和表中的“Value”列都是字符串类型)也可能有其他几个原因为此,您可能会错过插入操作中的任何表列值或'SAVE_COLUMN_NAME'的值,'SAVE_COLUMN_KEY','SAVE_COLUMN_VALUE'与表中的相应列名称不匹配。
[在运行应用程序时打开单独的命令提示符并编写adb logcat)并在此处显示结果(特别是当您尝试插入记录时),以便我们有更多与问题相关的信息]
[编辑]
好的,所以我认为我找到了问题
SQLiteDatabase db = this.getReadableDatabase();
您正在插入声明
Long int1 = db.insert(SAVE_TABLE_NAME, null, values);
INSERT应该使用可写数据库无法读取的数据库。
这里SQLiteDatabase db是一个可读数据库,它应该是一个可写数据库
变化
SQLiteDatabase db = this.getReadableDatabase();
到
SQLiteDatabase db = this.getWritableDatabase();
答案 2 :(得分:0)
我做了类似
的更改public void add_device(String data,ArrayList<HashMap<String, String>> jsonlist) {
try {
database = this.getWritableDatabase();
for (HashMap<String, String> map : jsonlist) {
ContentValues values = new ContentValues();
values.put(SAVE_COLUMN_NAME, data);
values.put(SAVE_COLUMN_KEY, map.get(SAVE_COLUMN_KEY));
values.put(SAVE_COLUMN_VALUE, map.get(SAVE_COLUMN_VALUE));
Long int1 = database.insertOrThrow(SAVE_TABLE_NAME, null,
values);
Log.i("insserted value ", int1 + "");
}
}
/*
* for(HashMap<String, String> map : mylist){ ContentValues cv = new
* ContentValues(); cv.put(FILE_NAME, map.get(FILE_NAME)); cv.put(DESC,
* map.get(DESC)); cv.put(UPLOADED_BY, map.get(DATE_UPLOADED));
* cv.put(ACTION, map.get(FILE_NAME)); cv.put(ID, map.get(ID));
* cv.put(FILE_URI, map.get(FILE_URI)); db.insert("tablename", null,
* cv); }
*/
catch (Exception e) {
}
}