Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wo, wie wann wird die SQL-Anweisung erzeugt? (https://www.delphipraxis.net/9664-wo-wie-wann-wird-die-sql-anweisung-erzeugt.html)

Tyrael Y. 1. Okt 2003 11:35


Wo, wie wann wird die SQL-Anweisung erzeugt?
 
Hallo erst einmal,

wenn man Anweisungen an die Datenbank in der Art

Code:
LTable.FieldByName('ID').AsString := myID;
schickt, müssen diese doch vorher durch Delphi(oder dem Datenbanktreiber) in eine SQL-Anweisung verwandelt werden
damit sie auf der Datenbank ausgeführt werden können. Oder seh ich das falsch?

Wenn es so ist,...

... wo, wie und wann wird diese SQL-Anweisung erzeugt?


Gruß Tyrael

ffomoon 1. Okt 2003 11:41

Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
 
versteh ich nicht was hat der feldname mit ner sql abfrage zutun????

moon

Tyrael Y. 1. Okt 2003 11:49

Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
 
Zitat:

versteh ich nicht was hat der feldname mit ner sql abfrage zutun
das ist der Feldname der verändert wird, für diesen Fall würde die SQL-Anweisung lauten

Code:
UPDATE myTable SET ID = myID

... wenn ich mich nicht irre

Hansa 1. Okt 2003 11:54

Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
 
Üblicherweise brauchst Du mindestens folgende Komponenten:

- Database
- Transaction
- Dataset

Und das Dataset muß Kenntnis von den Feldern haben. Sind diese drei Komponenten richtig eingestellt, dann kann man so eine Zuweisung machen. Denn das ist dann die Verbindung zu Delphi.

Tyrael Y. 1. Okt 2003 12:12

Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
 
ähm

Zitat:

Üblicherweise brauchst Du mindestens folgende Komponenten:

- Database
- Transaction
- Dataset

Und das Dataset muß Kenntnis von den Feldern haben. Sind diese drei Komponenten richtig eingestellt, dann kann man so eine Zuweisung machen. Denn das ist dann die Verbindung zu Delphi.
versteh ich nicht ... also nochmal zum Verständnis wie ich die Verbindung aubaue....

ich benutze eine MSSQL - Datenbank...
Die Verbindung zur DB wird so aufgebaut ...
Code:
 
  ...
  fDBConnector := TADOConnection.Create(nil);
  try
    fDBConnector.LoginPrompt := False;
    fDBConnector.ConnectionString := 'Provider=SQLOLEDB.1;Password=Test;Persist Security Info=True;User ID=sa;Initial      Catalog=ACMP;Data Source=myComputer';
    fDBConnector.Connected := True;
  ...
z.B lese ich ich Daten folgendermassen aus der DB
Code:
   ...
   lTable := TADOTable.Create(nil);
   try
    lTable.Connection := fDBConnector;
    lTable.TableName := 'TestTable';
    lTable.Open;
    while not lTable.Eof do
    begin
       myMemo.Lines.Add(lTable.fieldbyname('NAME').AsString);
       lTable.Next;
    end;
   finally
     lTable.Free;
   end;
   ...
also in dem Schritt
Code:
myMemo.Lines.Add(lTable.fieldbyname('NAME').AsString);
wird ja die Anweisung lTable.fieldbyname('NAME').AsString auf der DB ausgeführt
was der SQL-Anweisung SELECT NAME FROM TestTable entspricht


Die DB kann ja halt nur SQL-Anwesiungen ausführen, ...

... wann, wo, wie wird lTable.fieldbyname('NAME').AsString in
SELECT NAME FROM TestTable gewandelt?

Ich hoffe jetzt wird meine Frage klarer.

Hansa 1. Okt 2003 12:20

Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
 
Bei ADO und dem Access Krempel muß ich passen. Allerdings wirst Du wohl auch eine Datenmenge brauchen, die mit SELECT zusammengesucht wurde. Und hierauf kann man dann mit FieldByName zugreifen.

Tyrael Y. 1. Okt 2003 12:24

Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
 
ok trotzdem thx.

ich bin mir ja auch nicht sicher, ob das überhaupt geht,
da ich ganz gerne die SQL-Anweisung die zum Ausführen auf die DB geschickt wird
auslesen möchte, das ist das Ziel...

.. alles andere war nur eine Überlegung meinerseits


Gruß Tyrael

danielA 1. Okt 2003 14:27

Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
 
Hallo Tyrael Y. ,

Es ist sehr wahrscheinlich, daß hier überhauptnicht mit SQL gearbeitet wird.
Du greifst sicherlich über einen ODBC- Treiber auf deine Datenbank zu. Die Übergabe an den ODBC-Treiber erfolgt über eine standardisierte Schnittstelle und dementsprechenden Befehlen (nicht SQL).
Der ODBC- Treiber greift dann auf die Datenbank über Datenbankspezifische Befehle zu (ebenfalls nicht SQL). Wenn du aber eine SQL-Anweisung abschickst, wird diese über den ODBC-Treiber an den DB-Server geroutet und dort ausgeführt.
Sieh also SQL bitte nur als eine Möglichkeit auf Datenbanken zuzugreifen.

Grüße Daniel

Tyrael Y. 1. Okt 2003 14:39

Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
 
@daniel
ok danke, habe ich auch vermutet, aber habe trotzdem in der TADOTable und
verwandten Klassen nach dem setzen und schicken des SQL-Strings gesucht und leider
nicht fündig geworden

Schade eigentlich, daß kein SQL-String aufgebaut wird, da ich diesen in einem
Log-File speichern wollte

.. da kann man wohl erst einmal nix machen... :?

.. muss also nach ner anderen Möglichkeit zum loggen gucken

danke dir

Gruß Tyrael

Tanadirian 1. Okt 2003 18:07

Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
 
Hast du schon mal versucht mit dem Profiler (SQL-Servertool) den Verkehr zwischen Delphi und dem SQL-Server abzuhören? Ich schau mir so immer an, was genau passiert wenn ich ne SQL-Fehlermeldung bekomme mit der ich nichts anfangen kann.
Nen Versuch wärs auf jeden Fall wert!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 Uhr.
Seite 1 von 2  1 2      

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