Dans mon application, j'utilise la base de données SQLite. Lors de l'insertion de données dans l'une de mes tables, je suis confronté à un problème étrange de "SQLite exception: error 19". Pour la première fois, les données sont insérées mais, lorsque j'essaie d'insérer à nouveau des données, elles génèrent une exception.Android: problème lié à SQLite Contrainte
Mon create table requête:
"CREATE TABLE Tickets ("
+ "ID integer PRIMARY KEY NOT NULL,"
+ " UID varchar(40) NOT NULL DEFAULT 'not available'," + " OrderID int NOT NULL,"
+ " CarrierTicketNum varchar(15) NOT NULL,"
+ " TicketTypeID int NOT NULL," + " TankTypeID int NULL,"
+ " ProductObsGravity numeric NULL DEFAULT 0,"
+ " ProductHighTemp numeric NULL DEFAULT 0,"
+ " ProductLowTemp numeric NULL DEFAULT 0,"
+ " ProductObsTemp numeric NULL DEFAULT 0,"
+ " ProductBSW numeric NULL DEFAULT 0");
Insérer une requête:
public void insertTank(int OrderID, int TicketTypeID,
String CarrierTicketNum, String TankNum, int TankTypeID,
Double ProductObsTemp, Double ProductObsGravity, Double ProductBSW,
Double GrossBarrels, Double NetBarrels) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("OrderID", OrderID);
values.put("CarrierTicketNum", CarrierTicketNum);
values.put("TankNum", TankNum);
values.put("TicketTypeID", TicketTypeID);
values.put("TankTypeID", TankTypeID);
values.put("ProductObsTemp", ProductObsTemp);
values.put("ProductObsGravity", ProductObsGravity);
values.put("ProductBSW", ProductBSW);
values.put("GrossBarrels", GrossBarrels);
values.put("NetBarrels", NetBarrels);
//try {
db.insertOrThrow("Tickets", null, values);
/*} catch (SQLiteException sqle) {
Log.d(TAG, "SQLITException: " + sqle.getMessage());
}*/
db.close(); // Closing database connection
}
ci-après le détail du journal:
09-08 13:54:57.610: E/AndroidRuntime(5713): FATAL EXCEPTION: main
09-08 13:54:57.610: E/AndroidRuntime(5713): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
09-08 13:54:57.610: E/AndroidRuntime(5713): at android.database.sqlite.SQLiteStatement.native_executeInsert(Native Method)
09-08 13:54:57.610: E/AndroidRuntime(5713): at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:113)
09-08 13:54:57.610: E/AndroidRuntime(5713): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1718)
09-08 13:54:57.610: E/AndroidRuntime(5713): at android.database.sqlite.SQLiteDatabase.insertOrThrow(SQLiteDatabase.java:1617)
09-08 13:54:57.610: E/AndroidRuntime(5713): at com.dzo.dispatchcrude.driverapp.datalayer.DatabaseHandler.insertTank(DatabaseHandler.java:736)
09-08 13:54:57.610: E/AndroidRuntime(5713): at com.dzo.dispatchcrude.driverapp.NetBarrelActivity$1.onClick(NetBarrelActivity.java:103)
09-08 13:54:57.610: E/AndroidRuntime(5713): at android.view.View.performClick(View.java:3511)
09-08 13:54:57.610: E/AndroidRuntime(5713): at android.view.View$PerformClick.run(View.java:14110)
09-08 13:54:57.610: E/AndroidRuntime(5713): at android.os.Handler.handleCallback(Handler.java:605)
09-08 13:54:57.610: E/AndroidRuntime(5713): at android.os.Handler.dispatchMessage(Handler.java:92)
09-08 13:54:57.610: E/AndroidRuntime(5713): at android.os.Looper.loop(Looper.java:137)
09-08 13:54:57.610: E/AndroidRuntime(5713): at android.app.ActivityThread.main(ActivityThread.java:4424)
09-08 13:54:57.610: E/AndroidRuntime(5713): at java.lang.reflect.Method.invokeNative(Native Method)
09-08 13:54:57.610: E/AndroidRuntime(5713): at java.lang.reflect.Method.invoke(Method.java:511)
09-08 13:54:57.610: E/AndroidRuntime(5713): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-08 13:54:57.610: E/AndroidRuntime(5713): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-08 13:54:57.610: E/AndroidRuntime(5713): at
dalvik.system.NativeStart.main(Native Method)
Lire presque messages de nombre, mais n » ai pas J'ai beaucoup d'hel p.
Voulez-vous mettre à jour les données déjà existantes? –
Non, je souhaite insérer de nouvelles données à chaque fois. Y a-t-il un problème de syntaxe? – Nitish
Vous avez simplement besoin d'insérer une nouvelle ligne? –