German DBUtils, InsertMaps

mw71

Active Member
Licensed User
Longtime User
Hallo,

ich stehe gerade etwas auf dem Schlauch.

Ich erstelle eine SQL DB (funktioniert):
B4X:
                query_Save="CREATE TABLE log (id INTEGER PRIMARY KEY AUTOINCREMENT, Datum TEXT, Zeit TEXT, Call TEXT, Send TEXT, Recive TEXT, Band TEXT, Mode TEXT, vomBerg TEXT, zumBerg TEXT, Kommentar TEXT)"

anschließend möchte ich eine Liste die Maps enthält in diese schreiben:
(der 1 Key in der Map enthält als Value die ID)
B4X:
DBUtils.InsertMaps(SQL1,"log",Importieren.Liste)

dabei kommt aber (nach der Log Meldung) eine Fehlermeldung:
B4X:
InsertMaps (first query out of 280): INSERT INTO [log] ([id], [Datum], [Zeit], [Call], [Band], [Mode], [Send], [Recive], [vomBerg], [zumBerg], [Kommentar]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

(SQLiteConstraintException) android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: log.id (code 1555)
#################################################################
Error Code : 1555 (SQLITE_CONSTRAINT_PRIMARYKEY)
Caused By : Abort due to constraint violation.
    (UNIQUE constraint failed: log.id (code 1555))
#################################################################

Ich hoffe ihr könnt mir Helfen. Danke
 

rboeck

Well-Known Member
Licensed User
Longtime User
Du hast Log.id indiziert mit autoincrement; beim Einfügen meldet das System, das die UNIQUE Bedingung nicht erfüllt ist, wahrscheinlich darfst Du den Wert nicht selber setzen...
 

mw71

Active Member
Licensed User
Longtime User
Moin, Moin,

Klaus, das Kapitel habe ich mir angeschaut als ich begonnen hatte die Speicherung von CSV auf SQLite umzusetzen, hat mir da auch gut geholfen.

Die ID Bilde ich mit der Codezeile Dim ID As Long = DateTime.Add(DateTime.Now, -30,0,0), das funktioniert (bei bisherigen Anwendung) auch.
Nach dem ich jetzt noch mal drüber geschlafen hatte, habe ich das so gelöst das ich beim Einstieg in die Routine die ID so ermittle und dann
für jeden Datensatz +1 rechne. So funktioniert die Speicherung erst mal. Ich denke die Routine war zu schnell so das mehrere Datensätze die gleiche
ID verpasst bekommen haben (ist aber nur eine Vermutung).

Ich habe jetzt noch das Problem das ich die so angelegte DB mit meiner Routine nicht lesen kann (SQLite Viewer funktioniert aber), da muss ich noch mal
mit dem Debugger drüber schauen.

noch mals Danke! & Grüße
 
Top