![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: DevArt UniQuery
SQLite Autoincrement Problem
Ich habe ein kleines Problem mit SQLite.
ich habe eine Tabelle mit folgenden SQL-Statement erstellt:
Code:
Leider erhalte ich aber wenn ich einen neuen Eintrag poste folgende Fehlermeldung:
CREATE TABLE "Prioritaeten" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "Titel" varchar(255))
Zitat:
:dp: |
AW: SQLite Autoincrement Problem
Wie sieht das Insert Statement aus?
|
AW: SQLite Autoincrement Problem
Ursprünglich hatte ich diesen Code:
Delphi-Quellcode:
Bei diesem ist der Fehler erschienen.
dm.qry_Kategorie.Append;
dm.qry_KategorieTitel.Value:=cbb_Kategorie.Text; dm.qry_Kategorie.Post; Nachdem ich es auf folgenden Code geändert haben funktioniert es.
Delphi-Quellcode:
Danke trotzdem.
dm.qry_Kategorie.SQL.Clear;
dm.qry_Kategorie.SQL.Add('Insert into Kategorien ("Titel") Values ("'+cbb_Kategorie.Text+'")'); dm.qry_Kategorie.ExecSQL; |
AW: SQLite Autoincrement Problem
Anstelle der ID muss Du NULL einfügen, siehe Beispiel:
Delphi-Quellcode:
Bei Dir muss es dann ungefähr so aussehen:
SQLQueryCategory.Close;
SQLQueryCategory.SQL.Text := 'INSERT INTO tbcategory VALUES(NULL, :category)'; SQLQueryCategory.ParamByName('category').AsString := CategoryComboBox.Text; SQLQueryCategory.ExecSQL; SQLTransaction1.Commit;
Delphi-Quellcode:
dm.qry_Kategorie.SQL.Add('Insert into Kategorien ("ID", "Titel") Values (NULL, "'+cbb_Kategorie.Text+'")');
|
AW: SQLite Autoincrement Problem
@AlexII
Mit dem SQl-Statement hat er keine Probleme. @Kirchi Das Problem liegt wohl daran, dass die Query-Komponente erkennt, dass das Feld benötigt (required) wird aber eben nicht erkennt dass es sich um ein AutoInc Feld handelt. Das kann man der UniDAC Query auf verschiedene Arten beibringen:
|
AW: SQLite Autoincrement Problem
Ich hatte das Problem gerade als ich ein TUniQuery manuell erstellt habe und dann per SQL ein Insert oder per Query.Insert Werte hinzufügen wollte. Die ID hat er noch erkannt dass die von der DB vergeben wird. Nicht aber bei der Spalte Rowguid, die für Replikationen benötigt wird.
Nachdem ich
Delphi-Quellcode:
gesetzt habe, geht es auch dor
dbQuery := TUniQuery.Create(NIL);
dbQuery.Connection := dbConnection; dbQuery.Options.RequiredFields := false; // Verhindert "Feld muss einen Wert haben" Gerd |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz