![]() |
Wo, wie wann wird die SQL-Anweisung erzeugt?
Hallo erst einmal,
wenn man Anweisungen an die Datenbank in der Art
Code:
schickt, müssen diese doch vorher durch Delphi(oder dem Datenbanktreiber) in eine SQL-Anweisung verwandelt werden
LTable.FieldByName('ID').AsString := myID;
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 |
Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
versteh ich nicht was hat der feldname mit ner sql abfrage zutun????
moon |
Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
Zitat:
Code:
UPDATE myTable SET ID = myID
... wenn ich mich nicht irre |
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. |
Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
ähm
Zitat:
ich benutze eine MSSQL - Datenbank... Die Verbindung zur DB wird so aufgebaut ...
Code:
z.B lese ich ich Daten folgendermassen aus der DB... 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; ...
Code:
also in dem Schritt
...
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; ...
Code:
wird ja die Anweisung lTable.fieldbyname('NAME').AsString auf der DB ausgeführt
myMemo.Lines.Add(lTable.fieldbyname('NAME').AsString);
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. |
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.
|
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 |
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 |
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 |
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! |
Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
Verstehe nicht, wieso man überhaupt mit TTable arbeiten muß, wenn 'ne "echte" Datenbank im Hintergrund ist.
Mache immer alles über TQuery bzw. TAdoQuery. Sind beide abgeleitet von TDataSet. TDataSet kennt und hat TFields. Eine Zuweisung der Form
Delphi-Quellcode:
weist dem TField (Variant) einen AsTyp-Wert zu. TDataset (bzw. TField über TDataSet) sendet dann an die DB:
TDataSet.FieldByName('FeldName').AsTyp := Wert
SQL-Code:
.
update TabellenName set FeldName = Wert
Grüße Tim |
Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
Hallo Daniel,
Zitat:
|
Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
Zitat:
Zitat:
das umschreiben wäre sehr aufwendig. Meistens wurde TADOTable genutzt um Blob Felder in die Datenbank zu schreiben. Ich muss halt mit den Gegegebenheiten jetzt klarkommen. Wie kann ich den an die TFields von TADOTable rankommen ? Zitat:
|
Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
Hallo Tyrael Y.,
bei der Enterprise-Version gibt's für die BDE einen SQL-Monitor. Ob's so etwas für ADO gibt, kann ich Dir nicht sagen. |
Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
ok macht nix.
ich danke dir für deine mühe. Gruß Tyrael |
Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
Hallo r_kerber
Ja du hast Recht, ich habe eben einmal Zugriffe auf eine InterbaseDB über ODBC in der ODBC Verwaltung mitgeloggt. Der ODBC setzt die Sachen tatsächlich in SQL um, auch wenn die Abfrage nicht in SQL kommt. Ich habe das wohl mit den Interbasekomponenten verwechselt, welche über die Interbase-API dem Server direkte Anweisungen geben. Grüße Daniel |
Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
Hi Tyrael
Statt des BDE-SQL-Monitors hat MS-SQL den SQL-Profiler mit an Bord - mit dem solltest Du den SQL-Command-Verkehr zu Deinem MS-SQL-Server mitloggen können - such mal nach "MSSQL-Verzeichnis...\Tools\Binn\profiler.exe" |
Re: Wo, wie wann wird die SQL-Anweisung erzeugt?
hallo zusammen,
bin grad bei einem anderem plugin beschäftigt, aber das was ihr schreibt hört sich vielversprechend an. ich danke euch und werde es sobald es geht testen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 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-2025 by Thomas Breitkreuz