AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensätze in DB einfügen
Thema durchsuchen
Ansicht
Themen-Optionen

Datensätze in DB einfügen

Ein Thema von elduchte · begonnen am 17. Apr 2005 · letzter Beitrag vom 17. Apr 2005
Antwort Antwort
elduchte

Registriert seit: 21. Jun 2003
20 Beiträge
 
#1

Datensätze in DB einfügen

  Alt 17. Apr 2005, 17:01
Datenbank: Access • Version: 2000 • Zugriff über: ADO
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

Select * from TabellenNamen auf meine Tabelle zu.

Im Source-Code meines Programmes schreibe ich dann folgerdermaßen in die Datenbank:

Delphi-Quellcode:
  ADODataSet1.Append;
  ADODataSet1.FieldByName('Name').AsString := Firmenname.Text;
  ADODataSet1.Post;
Mittlerweile lese ich immer INSERT und UPDATE.

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
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Datensätze in DB einfügen

  Alt 17. Apr 2005, 17:10
Hi,

Z.B. du hast eine Tabelle "highscore" die so aufgebaut ist:

Code:
name | punkte
Wenn du nun einen neuen Datensatz einfügen willst, ginge das so:
Delphi-Quellcode:
Query1.SQL.Text := 'INSERT INTO highscores VALUES (:name, :punkte);
Query1.ParamByName(
'name').AsString := edName.Text;
Query1.ParamByName(
'punkte').AsInteger := StrToInt(edPunkte.Text);
Query1.ExecSQL;
Das SQL-Statement bedeutet folgendes: "Füge einen neuen Datensatz in die Tabelle highscores mit den Werten :name und :punkte".
:name und :punkte sind Parameter. Diese werden mit ParamByName('Parametername ohne den Doppelpunkt') angesprochen. Du kannst aber auch gleich sowas machen:

Query1.SQL.Text := 'INSERT INTO highscores VALUES ('Friedrich', 5000); Wobei ich die Variante mit den Parametern bevorzuge, aber jedem das seine .

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.
  Mit Zitat antworten Zitat
elduchte

Registriert seit: 21. Jun 2003
20 Beiträge
 
#3

Re: Datensätze in DB einfügen

  Alt 17. Apr 2005, 17:17
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
  Mit Zitat antworten Zitat
elduchte

Registriert seit: 21. Jun 2003
20 Beiträge
 
#4

Re: Datensätze in DB einfügen

  Alt 17. Apr 2005, 17:21
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) ?
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Datensätze in DB einfügen

  Alt 17. Apr 2005, 17:26
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
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
elduchte

Registriert seit: 21. Jun 2003
20 Beiträge
 
#6

Re: Datensätze in DB einfügen

  Alt 17. Apr 2005, 17:40
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz