Entwickler-Ecke
Datenbanken - SQL-Datenbank auslesen
J.Borchert - Do 28.01.10 18:12
Titel: SQL-Datenbank auslesen
Hallo liebe Helfer,
ich habe täglich mit einer Oberfläche zu tun, die eine SQL-Datenbank mit Baustellen auf einem Kalender darstellt.
Ich würde gern eine eigene Oberfläche zum Anzeigen der Daten basteln, habe vor das mit ADO zu machen, und habe dazu folgende Fragen:
In der INI-Datei der Anwendung ist (glaube ich) der "Pfad" zur Datenbank hinterlegt:
Database=Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=XXXG;Data Source=Braunschweig06SQL
Wenn ich jetzt also eine ADOConnection verwende, was müßte ich dort in den Eigenschaften einstellen?
Da ich den genauen Aufbau der DB nicht kenne (Namen von Tabellen und Spalten) : Wie kann ich die Daten dennoch auslesen?
Bitte verzeiht mir meine Unwissenheiten, bin ganz neu im Umgang mit Datenbanken...
Muck - Do 28.01.10 20:19
Hallo,
der angezeigte connection string ist von einem Microsoft SQL Server.
Du kannst den gesamten ConnectionString einfach in Delphi in dein TAdoConnection object nach ADOConnection.ConnectionString kopieren. Stelle ausserdem LoginPrompt auf False.
Danach eine TAdoQuery auf die Form ziehen und mit der ADOConnection verbinden.
Stelle ADOQuery.SQL auf "Select name from sys.databases" um Dir alle Tables anzeigen zu lassen.
Manchmal hilft es nach VIEWS zu suchen.
Stelle in einer Query SQL auf "select * from sys.all_views where is_ms_shipped=0" um Dir die namen aller view anzuzeigen.
Na ja, und damm mit SQL "select * from [Tablename oder ViewName aus der Liste]" einfach mal in den Daten stoebern.
Das war es so in ganz kurz.
cu
Markus
J.Borchert - Do 28.01.10 21:13
Danke Markus!
Ich werde es morgen mal ausprobieren. (auf Arbeit)
Achtung liebe Netzwerkadmins:
Im Connection-String das "Braunschweig" war frei erfunden, und ich besitze Leserechte mit Passwort etc. für die ganze Sache.
Setze jetzt die Frage noch nicht auf erledigt...
Danke nochmals... :wink2:
J.Borchert - Sa 30.01.10 14:52
Hallo nochmal,
ich habe also getestet und Folgendes bemerkt:
| Zitat: |
Stelle ADOQuery.SQL auf "Select name from sys.databases" um Dir alle Tables anzeigen zu lassen.
Manchmal hilft es nach VIEWS zu suchen.
Stelle in einer Query SQL auf "select * from sys.all_views where is_ms_shipped=0" um Dir die namen aller view anzuzeigen. |
Die Tabellen bekommt man so nicht, aber man bekommt die Namen der einzelnen Datenbanken. VIEWS sind nach meinen neuen Erkenntnissen Abfragen, die gespeichert werden, also auch keine Tabellen-Namen.
Bei den Schweizern unter
http://www.swissdelphicenter.ch/de/showcode.php?id=1433 bekam ich einen Code-Schnipsel zum Ermitteln der Tabellennamen.
Das klappt alles ganz gut. Was ich aber noch nicht geknackt habe sind die einzelnen Spalten-Namen und ob diese indiziert sind oder welche Größe die Felder der einzelnen Spalten (und Typ) haben.
Also wenn jemand noch einen Tip geben könnte, würde ich mich freuen. (Am besten per ADO)
Dennoch Danke für das "auf den Weg bringen..." sagt Jürgen :think:
J.Borchert - So 07.02.10 19:23
Der Vollständigkeit halber hier mein Ergebnis:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure QueryToSg(const sg:TStringGrid); var x,y,maxbreite:integer; s:string; begin with Form1 do begin for x:=0 to sg.RowCount-1 do sg.Rows[x].Clear; with ADOQuery1 do with sg do begin ColCount := FieldCount; RowCount := RecordCount+1; y:=0; First; while not Eof do begin for x := 0 to FieldCount-1 do begin Cells[x, y+1] := Fields[x].AsString; Cells[x, 0] := Fields[x].DisplayLabel; end; Next; Inc(y); end; for x := 0 to ColCount-1 do begin maxbreite := 0; for y := 0 to RowCount-1 do maxbreite := max(maxbreite, canvas.textwidth(cells[x, y])); ColWidths[x] := maxbreite + 15; end; end; end; end; |
Fields[x].DisplayLabel sind die Überschriften der Tabellenspalten des DBGrids bzw. des Records bzw. von ADOQuery1
Ich stelle mir einfach das Abfrageergebniss (Query) als Tabelle vor.
Danke und Tschüß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!