android.database.sqlite.SQLiteConstraintException: kode kesalahan 19: kendala failedException

Saya membuat tabel bernama resources tetapi ketika saya memasukkan nilai ke dalamnya, pengecualian ini muncul:

android.database.sqlite.SQLiteConstraintException:
error code 19: constraint failedexception

Inilah pernyataan buat tabel saya:

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

Berikut ini adalah kode masukkan saya:

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

Adakah yang bisa memberi tahu saya di mana masalahnya?


person ekjyot    schedule 14.11.2011    source sumber
comment
Saat Anda mengharapkan orang lain men-debug kode Anda, sebaiknya Anda menyediakan seluruh pelacakan tumpukan.   -  person Arnab Chakraborty    schedule 14.11.2011
comment
pastikan, apakah tabel Anda dibuat dengan benar? Saya rasa, kueri pembuatan Anda juga mengalami masalah. Anda tidak memberikan spasi setelah nama tabel dalam kueri pembuatan Anda. Juga nama kolom yang Anda gunakan untuk mengambil data dari tabel berbeda dengan yang Anda gunakan dalam kueri pembuatan.   -  person Hiral Vadodaria    schedule 14.11.2011


Jawaban (2)


Batasan gagal biasanya menunjukkan bahwa Anda melakukan sesuatu seperti meneruskan nilai null ke dalam kolom yang Anda nyatakan sebagai not null saat Anda membuat tabel.

person skynet    schedule 14.11.2011
comment
Bisakah Anda memposting metode insert Anda juga? Saya berasumsi ini adalah metode pembantu yang memanggil metode SQLiteDatabase.insert sebenarnya dengan data Anda - person skynet; 14.11.2011
comment
solusi sempurna untuk tabel tanpa kunci utama!! - person mayank_droid; 04.09.2012

Untuk mendapatkan informasi lebih lanjut tentang kesalahan SQLite, seseorang dapat menggunakan ADB dumpsys:

adb shell dumpsys dbinfo -v

dikombinasikan dengan grep:

adb shell dumpsys dbinfo -v | grep executeForLastInsertedRowId

atau diterima dua kali:

adb shell dumpsys dbinfo -v | grep executeForChangedRowCount | grep failed
person Martin Zeitler    schedule 17.07.2016