Eintrag in SQL mit INSERT geht nicht

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Sinthalor
Beiträge: 3
Registriert: So 16. Okt 2011, 13:19

Eintrag in SQL mit INSERT geht nicht

Beitrag von Sinthalor »

Hallo zusammen!

Wie der Name schon sagt hab ich ein Problem damit neue Daten in meine Datenbank einzufügen.
Das Abfragen funktioniert wunderbar. Sobald ich aber versuche mit INSERT neue Daten hinzuzufügen bekomme ich eine Fehlermedlung.
Ich hab mich hier im Forum umgeguckt und herrausgefunden, dass ich ExecSQL verwenden muss, mir ist allerdings nicht ganz klar wie das funktionieren soll.
Hier mal mein Code:

Code: Alles auswählen

procedure TForm1.BtnSendenClick(Sender: TObject);
begin
  Query.SQL.Clear;
  Query.SQL.Text:='INSERT INTO shoutbox (name, text) VALUES ("'+user+'", "'+EdText.Text+'");';
  Query.ExecSQL;
  Query.Active:=True;
  Query.Active:=False;
end;
Das Lustige daran ist, dass trotz Fehlermeldung ein Eintrag in die Datenbank gemacht wird.
Kann mir jetzt jemand erklären wie genau der ExecSQL-Befehl funktioniert? Bzw. warum mein Code nicht so will wie ich?
Ich bin für jede Hilfe dankbar :)

Gruß
Sinthalor

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Eintrag in SQL mit INSERT geht nicht

Beitrag von Teekeks »

Das Problem ist das Query.Activ:=true;
und das Query.Activ:=false;
Das musst du weglassen, dann geht alles!

Sinthalor
Beiträge: 3
Registriert: So 16. Okt 2011, 13:19

Re: Eintrag in SQL mit INSERT geht nicht

Beitrag von Sinthalor »

Vielen Dank!
Jetzt geht es!
Ich versteh aber nicht ganz warum... Könntest du mir das kurz erklären?
Dann kann ich solche Fehler in Zukunft vermeiden ;)

Danke nochmal, dass du dir die Zeit genommen hast! :)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Eintrag in SQL mit INSERT geht nicht

Beitrag von af0815 »

Warum ?!

Kurzversion:
1) active true/false verwenden wenn eine Datenmenge zurückgegeben wird. (Normalerweise bei SELECT ...)

2) ExecSQL verwenden wenn du KEINE Datenmenge zurückerwartest. (INSERT, DELETE, UPDATE)

für mehr Infos kann man auch mal in die LazInfos schauen. Link hier oder andere Quellen mittels Google verwenden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Sinthalor
Beiträge: 3
Registriert: So 16. Okt 2011, 13:19

Re: Eintrag in SQL mit INSERT geht nicht

Beitrag von Sinthalor »

Ok, das kann man sich als Faustregel doch wunderbar merken.
Vielen Dank für deine Antwort :)

Antworten