views:

141

answers:

2

Hi everybody!

when I'm trying to run the

                ContentValues cv = new ContentValues();
  cv.put(table_LocalSettings_Unit, input);
  mDb.insert(table_LocalSettings, "", cv);

I got the following error: Error inserting unit = 0; SqliteConstraintException: error code 19 constraint failed. What should be the problem ? The table sql Code is:

 "create table if not exists " + table_LocalSettings + "( " + table_LocalSettings_ID
                                                                        + " INTEGER PRIMARY KEY NOT NULL , " + table_LocalSettings_MapType
                                                                        + " INTEGER NOT NULL , " + table_LocalSettings_Visib + " BIT NOT NULL , "
                                                                        + table_LocalSettings_Unit + " INTEGER DEFAULT 0 NOT NULL , "
                                                                        + table_LocalSettings_SpeedUnit + " INTEGER NOT NULL , "
                                                                        + table_LocalSettings_Alert + " BIT NOT NULL ," + table_LocalSettings_UserID
                                                                        + " INTEGER DEFAULT -1 , " + table_LocalSettings_Username + " VARCHAR , "
                                                                        + table_LocalSettings_PowerSave + " VARCHAR , " + table_LocalSettings_PremiumUser
                                                                        + " INTEGER NOT NULL DEFAULT 0);";
A: 

constraint failed

Sounds like your primary key already exists in the table

Pentium10
I had updated the first question. Do you see something wrong on my sql ? I can't !
Karoly
Sounds like you are not attaching to the contentvalues value for the primary key. And this is fails as the table creation is missing the autoincrement directive, it would be something like: `'_id' integer PRIMARY KEY AUTOINCREMENT NOT NULL`
Pentium10
input variable is an integer
Karoly
But that goes for another column, for table_LocalSettings_Unit. I don't see you insert value for column table_LocalSettings_ID. Add that autoincrement directive to your table creation and probably will start working. Megertetted hogy miert tortenik igy?
Pentium10
unfortunately don't works. The offical sqlite documentation said:"INTEGER PRIMARY KEY" also include AUTOINCREMENT keyword. So, I don't need to add it:(
Karoly
Take the table off the device, and test in a SQLite engine and see if works. I still believe your autoincrement stuff is broken.
Pentium10
A: 

I had the same problem and Pentium 10's answer led me in the correct direction. After verifying the bellow code was wrong then correcting it I cleared data from that app in the emulator and it recreated the DB and it works fine now.

     "create table if not exists " + DATABASE_TABLE + " (" + _ID + " integer primary key autoincrement," +
     " ItemName text not null, ItemID text not null, Image text not null, ImageDate text not null);";

I think one of my problems was I had an extra column. I removed one of the columns earlier and did not remove it from the above lines.

The main thing is tripple check the code for errors and spelling and if using the emulator clear the data.

Opy