android - query - アンドロイド.database.sqlite.SQLite制約例外: エラーコード19: 制約失敗例外



android sqlite select arraylist (2)

SQLiteエラーに関するより多くの情報を得るために、ADB dumpsysを使うことができます。

adb shell dumpsys dbinfo -v

grepと組み合わせて:

adb shell dumpsys dbinfo -v | grep executeForLastInsertedRowId

または2回grep'ed:

adb shell dumpsys dbinfo -v | grep executeForChangedRowCount | grep failed

https://ffff65535.com

resourcesという名前のテーブルを作成しましたが、その中に値を挿入すると、この例外がスローされます。

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");
    }
}

誰もがどこで問題になる可能性があるのか​​教えてもらえますか?


制約の失敗は通常、テーブルを作成するときにnot nullnot nullと宣言した列にnull値を渡すなどのことを行ったことを示します。





sql-insert