2

this is the error code:

09-27 11:56:01.425: WARN/System.err(10324): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
09-27 11:56:01.435: WARN/System.err(10324):     at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
09-27 11:56:01.435: WARN/System.err(10324):     at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
09-27 11:56:01.435: WARN/System.err(10324):     at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1809)
09-27 11:56:01.435: WARN/System.err(10324):     at de.enough.appmate.dbase.CMSResource.updateItem(CMSResource.java:1103)
09-27 11:56:01.435: WARN/System.err(10324):     at de.enough.appmate.dbase.CMSResourceUpdater.updateItems(CMSResourceUpdater.java:178)
09-27 11:56:01.435: WARN/System.err(10324):     at de.enough.appmate.dbase.CMSResourceUpdater.loadUpdates(CMSResourceUpdater.java:102)
09-27 11:56:01.435: WARN/System.err(10324):     at de.enough.appmate.dbase.CMSResourceUpdaterRunnable.run(CMSResourceUpdaterRunnable.java:32)
09-27 11:56:01.435: WARN/System.err(10324):     at java.lang.Thread.run(Thread.java:1019)

and this is the method that is used

this.db.execSQL("INSERT INTO itemGalleryItems (id, imageCaption, imageUrl,itemID,orderIndex,displayInGallery) VALUES (?,?,?,?,?,?); ",
                        bindArgs);

the binArgs looks like:

String[] bindArgs = {
        (String) imageItem.get("id"),
        (String) imageItem.get("imageCaption"),
        (String) imageItem.get("imageName"),
        (String) item.get("id"),
        (String) imageItem.get("orderIndex"),
        (String) imageItem.get("displayInGallery")};

hope someone can help

thanx newone

newone
  • 125
  • 1
  • 5
  • 13
  • in someone field defined the constraint which will not full fill when you insert the value check the constraint. please display your table structure here with so we can see what constraint are failed – Pratik Sep 27 '11 at 10:08
  • I had the same problem, but for me, [this][1] worked. [1]: http://stackoverflow.com/questions/8117685/android-database-sqlite-sqliteconstraintexception-error-code-19-constraint-fai – GreenBee May 09 '13 at 16:58

3 Answers3

8

I have fixed this error;

instead of

long sucess = db.insert(TABLE_NAME_CONTACT_EXTRA, null, row);

use this to insert data in database

long sucess = db.insertWithOnConflict(TABLE_NAME_CONTACT_EXTRA, null,
                row, SQLiteDatabase.CONFLICT_IGNORE);
akjoshi
  • 15,374
  • 13
  • 103
  • 121
Manoj Kumar
  • 81
  • 1
  • 2
4

I think if you have autoincrement field, you shouldn't include it in the query... is the "id" autoincrement?

mihail
  • 2,173
  • 19
  • 31
3

Have a look at your insert statement. Does it have all the columns that are declared to be not null in table create statement? And try no to use "id" column, use "_id" instead.

nixan
  • 523
  • 1
  • 6
  • 13
  • when i change id to _id than I get this failure : android.database.sqlite.SQLiteException: table itemGalleryItems has no column named _id: , while compiling: INSERT INTO itemGalleryItems (_id, imageCaption, imageUrl,itemID,orderIndex,displayInGallery) VALUES (?,?,?,?,?,?); – newone Sep 27 '11 at 10:44
  • Changing id to _id was a reccomendation. If you provided an id column name in your table's create statement than you'll have to use id in all other statements. – nixan Sep 27 '11 at 10:58
  • look here: [link](http://stackoverflow.com/questions/7568062/stupid-error-android-database-sqlite-sqliteconstraintexception-error-code-19-co) – newone Sep 27 '11 at 11:05
  • Show your create table statement. – nixan Sep 27 '11 at 11:10
  • In my case I was not binding a value for primary key. By adding that, I got rid of the problem. – Sufian Apr 19 '15 at 13:45