Ответ 1
Неисправность Constraint обычно указывает, что вы сделали что-то вроде передачи значения null
в столбец, который вы объявляете как not null
при создании своей таблицы.
Я создал таблицу с именами ресурсов, но когда я вставляю в нее значения, это исключение вызывается:
android.database.sqlite.SQLiteConstraintException:
error code 19: constraint failedexception
Вот мой оператор create table:
public static final String DATABASE_CREATE =
"CREATE TABLE " + table_resources + "(ID INTEGER PRIMARY KEY,
KEY_TYPE text, KEY_ENCODING text, KEY_WIDTH text, KEY_HEIGHT text,
KEY_DATA text, KeyIId text)";
Ниже приведен мой код вставки:
JSONObject show = data.getJSONObject(i);
if (show.get("type").equals("resource_updates")) {
JSONArray resources = show.getJSONArray("resources");
try {
System.out.println("length of resources is is " + resources.length());
for (int resourceIndex = 0; resourceIndex < resources.length(); resourceIndex++) {
type = resources.getJSONObject(resourceIndex).getString("type").toString();
encoding = resources.getJSONObject(resourceIndex).getString("encoding").toString();
data1 = resources.getJSONObject(resourceIndex).getString("data").toString();
id = resources.getJSONObject(resourceIndex).getString("id").toString();
try {
width = resources.getJSONObject(resourceIndex).getString("width").toString();
} catch (Exception e) {
System.out.println(e);
width = "null";
}
try {
height = resources.getJSONObject(resourceIndex).getString("height").toString();
} catch (Exception e) {
e.printStackTrace();
height = "null";
}
db.insert(type,encoding,width,height, data1,iid);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println(e + "exception");
System.out.println("exception in the resources");
}
}
Может ли кто-нибудь сказать мне, где может быть проблема?
Неисправность Constraint обычно указывает, что вы сделали что-то вроде передачи значения null
в столбец, который вы объявляете как not null
при создании своей таблицы.
Чтобы получить дополнительную информацию о ошибках SQLite, можно использовать ADB dumpsys:
adb shell dumpsys dbinfo -v
в сочетании с grep:
adb shell dumpsys dbinfo -v | grep executeForLastInsertedRowId
или grep'ed дважды:
adb shell dumpsys dbinfo -v | grep executeForChangedRowCount | grep failed