AUTO_INCREMENT in TSQLQuery ohne Wirkung

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

AUTO_INCREMENT in TSQLQuery ohne Wirkung

Beitragvon ConcAPPtLab » 23. Okt 2016, 16:49 AUTO_INCREMENT in TSQLQuery ohne Wirkung

Hallo Community,

ich mache zurzeit meine ersten vorsichtigen Schritte mit SQL in Verbindung mit Lazarus. Wie sonst auch, hat jede meiner Tabellen eine Spalte ID, welche ganz normal via AUTO_INCREMENT hochgezählt werden soll.

Dies ist mein Code:

Code: Alles auswählen
{ Create property table }
    SQLQuery1.SQL.Text := 'CREATE TABLE IF NOT EXISTS prop (PID int AUTO_INCREMENT PRIMARY KEY, name varchar(255) NOT NULL, val varchar(255) NOT NULL)';
    SQLQuery1.ExecSQL;
    SQLTransaction1.Commit;
 
 { Add test property }
    SQLQuery1.SQL.Text := 'INSERT INTO prop (PID, name, val) VALUES (NULL, "Prop1", "Val1.1")';
    SQLQuery1.ExecSQL;
    SQLTransaction1.Commit;
 


Nun habe ich testweise mehrere Properties in die Tabelle eingespeichert. Allerdings habe ich festgestellt, dass alle Datensätze die PID 0 haben. Es scheint, als würde das AUTO_INCREMENT ohne Wirkung sein. Auch ein Test mit IDENTITY(0, 1) zählt die ID nicht hoch.

Eine Suche im Internet hat nichts ergeben. Wisst ihr, was das Problem ist?

Grüße
Definition "Strategische Fehlerkorrektur":
Solange rumprobieren bisses klappt :D
ConcAPPtLab
 
Beiträge: 89
Registriert: 18. Apr 2014, 17:57

Beitragvon Socke » 23. Okt 2016, 17:40 Re: AUTO_INCREMENT in TSQLQuery ohne Wirkung

ConcAPPtLab hat geschrieben:Eine Suche im Internet hat nichts ergeben. Wisst ihr, was das Problem ist?

Deine Datenbank akzeptiert das Schlüsselwort AUTO_INCREMENT, tut aber nichts?
In diesem Fall würde ich in der Dokumentation der Datenbank nachlesen, wie ich ein Auto-Increment-Attribut definieren muss.

Welche Datenbank verwendest du denn?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2583
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon Michl » 23. Okt 2016, 18:56 Re: AUTO_INCREMENT in TSQLQuery ohne Wirkung

Geht es denn so?:
Code: Alles auswählen
    SQLQuery1.SQL.Text := 'INSERT INTO prop (name, val) VALUES ("Prop1", "Val1.1")';
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2320
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon ConcAPPtLab » 23. Okt 2016, 20:07 Re: AUTO_INCREMENT in TSQLQuery ohne Wirkung

@Socke: ich bin mir nicht sicher, da ich neu auf dem Gebiet SQL in Lazarus bin. ABer ich verwende eine SQLite3Connection, von daher gehe ich mal von SQLite aus (habe bisher nur Erfahrung mit MySQL).

@Michl: Nein, leider nicht. Das ist genau die Variante, die ich anfangs hatte, als dann der Fehler auffiel.

EDIT: Mir fällt gerade auf, dass es neben dem SQLiteConnector noch Connectors für MySQL gibt. Könnte ich meinen jetzigen Code, der soweit bis auf diesen Fehler funktioniert, verwenden, wenn ich den Connector austausche? Würde ich dann auch normale MySQL Queries schreiben können?

EDIT Vol. 2: Gut, die Suche nach SQLite3 und Autoincrement hat nun zum Ergebnis geführt: http://stackoverflow.com/questions/7905 ... -in-sqlite. Es funktioniert nun einwandfrei. Nichtsdestotrotz freue ich mich über eine Beantwortung des vorherigen Edits, damit solche lästigen Problemsituationen ausbleiben (denn MySQL beherrsche ich soweit).

Trotzdem schon Mal einen Dank an euch beide für die rasche Hilfe :)
Definition "Strategische Fehlerkorrektur":
Solange rumprobieren bisses klappt :D
ConcAPPtLab
 
Beiträge: 89
Registriert: 18. Apr 2014, 17:57

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried