Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL - Zugriff, evtl. sogar ohne BDE (https://www.delphipraxis.net/2991-sql-zugriff-evtl-sogar-ohne-bde.html)

Evilboyz 17. Feb 2003 12:51


SQL - Zugriff, evtl. sogar ohne BDE
 
Hi,

auf Datenbanken habe ich bisher nur in PHP zugegriffen und bin deshalb, etwas verwöhnt, was das betrifft.
Nun suche ich nach einer möglichst einfachen Möglichkeit, auf einen MS-SQL Server aus meinem Delphi-Code heraus zuzugreifen.
Bisher habe ich TQuery verwendet und es sieht so aus, als würde alles funktionieren!
Aber nun möchte ich irgendwie an die Rückgabewerte meines Select kommen und die banale Frage, wie ich das anstelle, beschäftigt mich nun schon eine ganze Weile :oops:


PS: Hat irgendjemand vielleicht eine Idee, wie ich relativ einfach sogar ohne BDE zugreifen kann??

oki 17. Feb 2003 13:45

Hi,

es gibt im Netz freie Komponenten für die Zugriffe auf diverse Datenbanken. Ich habe selber schon mal Kompos von zeos verwendet. Leider habe ich momentan die Adresse nicht parat. Wenn Deine Suche wenig Erfolg hat, gib Bescheid. Dann frag ich einen Bekanten der die Adresse bestimmt noch hat.

Über google mit dem Stichwort zeos kommst du auf jeden Fall weiter. Schau aber genau ob die Kompos frei sind.

Gruß oki

MadMason 17. Feb 2003 16:20

ganz einfach:
nimm eine TSQLQuery
mit
Delphi-Quellcode:
SQLQuery1.SQL.Add('SELECT spalte FROM tabelle');
holst du dir die daten
in ne variable bekommst du sie mit
Delphi-Quellcode:
SQLQuery1.Open;
SQLQuery1.First;
variable:= SQLQuery.FieldValues['spalte'];
die funktion liefert nen variant zurück, du kannst also als VARIABLE String nehmen oder wenn du Zahlen hast Integer/Real --> wird automatisch erkannt

Touchdown 17. Feb 2003 19:29

Es ist ganz einfach:

Nach Ausführen einer SQL-Anweisung, ist die Query mit dem Ergebnis dieser Abfrage gefüllt.

Man kann dann die Query als Tabelle betrachen (was sie nicht natürlich nicht ist) und jeden Datensatz auswerten. Bei keinem Ergenis ist die Query leer!

Evilboyz 18. Feb 2003 08:55

Guten Morgen und vielen Dank für die Info, so sollte es funktionieren!
Allerdings habe ich jetzt ein weiteres Problem:
In der Zeile
Code:
Form1.Query.SQL.Add('SELECT Info FROM Tab1 WHERE ID='+GetWord(sIncome, 'nx', 1));
bricht meine Anwendung mit einem Fehler ab und ich habe im Moment keine Idee, woran das liegen könnte. GetWord gibt im übrigen einen Wert zurück, die Funktion funktioniert also fehlerfrei.
Was mir außerdem noch aufgefallen ist, ist die Tatsache, dass jedesmal, wenn meine Anwendung eine Verbindung zur Datenbank herstellt, ein Fenster erscheint, in dem ich zur Eingabe des Kennwortes aufgefordert werde. Kann ich dieses Fenster irgendwie umgehen, indem ich die Daten direkt in den Code schreibe?
:coder:

Evilboyz 18. Feb 2003 09:33

Naja, ich muss meine Aussage von eben etwas korrigieren, die Exception tritt bei "Query.Open;" auf, ich kann den Fehler also doch nicht so genau lokalisieren, wie ich das eben noch dachte!

Hansa 18. Feb 2003 09:53

Zitat:

Zitat von Evilboyz
... ein Fenster erscheint, in dem ich zur Eingabe des Kennwortes aufgefordert werde. Kann ich dieses Fenster irgendwie umgehen, indem ich die Daten direkt in den Code schreibe?

Schau mal im OI nach "LoginPrompt", das steht bestimmt auf true.

Evilboyz 18. Feb 2003 10:02

Im OI existiert bei mir keine Eigenschaft "LoginPrompt", kann das sein??
Ich habe eine Komponente TQuery in meinem Formular und unter Databasename verweise ich auf ein Alias. Fehlt mir da noch eine zweite Komponente?

Gollum 18. Feb 2003 10:12

Hallo Evilboyz,

wenn ich nicht irre, greifst Du auf einen MS-SQL-Server zu. Da Du die Enterprise-Version von Delphi 5 hast, würde ich Dir empfehlen, die ADO-Komponenten zu benutzen (sofern die bei dieser Version dabei sind).

Evilboyz 18. Feb 2003 10:41

Ja, die ADO-Komponente ist dabei und ich hab das jetzt auch mit ADO versucht. Soweit ich das sehe, ist diese Komponente in der Handhabung weitgehend identisch mit der "normalen" TQuery. Frage am Rande: welchen Vorteil bringt mir ADO dabei?
Jedenfalls habe ich auch mit ADO noch das gleiche Problem. Mir scheint, dass ich was grundlegendes vergessen habe!
Auf meinem Formular befindet sich also eine TADOQuery. Die Verbindung mit der Datenbank scheint zu funktionieren, "Verbindung testen" gibt mir auf alle Fälle grünes Licht.
mein Code für den Zugriff sieht nun wie folgt aus:
Code:
Form1.Query.Active:=false;
Form1.Query.SQL.Clear;
Form1.Query.SQL.Add('SELECT Info FROM Table1 WHERE test='+GetWord(sIncome, 'nx', 1));
Form1.Query.Open;
Form1.Query.First;
sResult:= Form1.Query.FieldList.Values['Info'];


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:06 Uhr.
Seite 1 von 3  1 23      

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