![]() |
Datenbank: Access • Version: 2000 • Zugriff über: ADO
Datensätze in DB einfügen
Hallo,
ich bin auf dem Gebiet der Datenbankprogrammierung in/mit Delphi noch ziemlich unerfahren. Mein Programm funktioniert allerdings nach einigen Anlaufschwierigkeiten ohne Probleme. Doch je mehr in diesem forum lese, desto mehr zweifel ich an der Richtigkeit meines Programmes: Ich trage mit meinem Programm mittels ADOConnection, Dataset und DataSource Daten in meine Datenbank ein. Dazu greife ich beim Dataset mit der SQL-Anweisung
Delphi-Quellcode:
auf meine Tabelle zu.
Select * from TabellenNamen
Im Source-Code meines Programmes schreibe ich dann folgerdermaßen in die Datenbank:
Delphi-Quellcode:
Mittlerweile lese ich immer INSERT und UPDATE.
ADODataSet1.Append;
ADODataSet1.FieldByName('Name').AsString := Firmenname.Text; ADODataSet1.Post; Kann mir da mal jemand bitte helfen, mache ich das eigentlich richtig, oder wird es anders gemacht? Denn wenn ich nur in die Datenbank schreiben will, muss ich trotzdem die SELECT-Anweisung schreiben. Oder macht man dies anders? Vielen Dank für Eure Hilfe Andreas |
Re: Datensätze in DB einfügen
Hi,
Z.B. du hast eine Tabelle "highscore" die so aufgebaut ist:
Code:
Wenn du nun einen neuen Datensatz einfügen willst, ginge das so:
name | punkte
Delphi-Quellcode:
Das SQL-Statement bedeutet folgendes: "Füge einen neuen Datensatz in die Tabelle highscores mit den Werten :name und :punkte".
Query1.SQL.Text := 'INSERT INTO highscores VALUES (:name, :punkte);
Query1.ParamByName('name').AsString := edName.Text; Query1.ParamByName('punkte').AsInteger := StrToInt(edPunkte.Text); Query1.ExecSQL; :name und :punkte sind Parameter. Diese werden mit ParamByName('Parametername ohne den Doppelpunkt') angesprochen. Du kannst aber auch gleich sowas machen:
Delphi-Quellcode:
Wobei ich die Variante mit den Parametern bevorzuge, aber jedem das seine ;).
Query1.SQL.Text := 'INSERT INTO highscores VALUES ('Friedrich', 5000);
Query.ExecSQL bedeutet, dass das SQL-Statement ausgeführt wird. Wenn du allerdings Daten aus der Datenbanken holen willst, geht alles genauso, nur musst du Query1.Open aufrufen anstatt Query1.ExecSQL. |
Re: Datensätze in DB einfügen
Hi,
das sieht ja ganz anders aus, als wie bei mir, obwohl das nun auch tadellos funktioniert. Wo ist denn jetzt der Unterschied? In meinen Büchern finde ich immer die Geschicht mit ADOQuery bzw ADODataset und Append und Post? Das ist mir noch nicht so klar ... Gruß Andi |
Re: Datensätze in DB einfügen
Ich habe noch was vergessen:
... wenn ich nun beim Query oder DataSet die SQL-Anweisung weglasse, bekomme ich immer eine Fehlermeldung, also muss diese wohl vorhanden sein, oder kann ich eine andere Komponente nutzen (ausser TTable) ? |
Re: Datensätze in DB einfügen
Hai elduchte,
es gehen beide Wege. In dem einem Fall erzeugst Du selber die INSERT, UPDATE SQL-Kommandos im anderen wird dies durch dein TQuery erledigt. Es ist allerdings zu empfehlen es selber zu machen. Dadurch bist Du, meiner Meinung nach, viel flexibler im Code. Ausserdem wird der Datensatz auf dem Server nur solange im Edit-Modus gehalten wie es gerade notwendig ist. Guckst Du:
Delphi-Quellcode:
begin
Query1.Edit; // Datensatz in den Editmodus bringen. Query1.Append hat das selbe Ergebniss. // Jetzt kommen beliebig // viele und auch // lange (zeitlich) Anweisungen Query1.Post; // Erst jetzt wird der Datensatz geschrieben und ist damit nicht mehr im Edit-Mode |
Re: Datensätze in DB einfügen
Vielen Dank für die Erklärung, jemand hat aber mal gesagt, dass es nicht zeitgemäß ist, ein TQuery zu nutzen, sondern den Dataset.
Und ich muss wohl immer die SQL-Anweisung schreiben.... Gruß Andreas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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 by Thomas Breitkreuz