AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Kleines Tool: SQL - TableToClass

Kleines Tool: SQL - TableToClass

Ein Thema von Hobbycoder · begonnen am 11. Sep 2018 · letzter Beitrag vom 1. Jan 2024
Antwort Antwort
Seite 3 von 5     123 45   
Hobbycoder
Registriert seit: 22. Feb 2017
Hi,

ich bin von Natur aus ein fauler Mensch (ob das auf alle Entwickler zutrifft kann und will ich nicht behaupten).
Jedenfalls ging es mir auf den Keks ständig das Klassengerüst für meine Datenbanktabellen zu schreiben. Jedenfalls bei 102 Tabellen + Views schon echt Arbeit.

Weil mir ja nun die DP und deren User wirklich viele gehen (nämlich ihre Zeit, um mir bei meinen Fragen und Problemen zu helfen), will ich mal was zurückgeben, sofern gewünscht.

Nun, dann schreibe ich mir halt ein kleines Tool, dass mir zumindest mal das 'Grobe' abnimmt. Herausgekommen ist ein doch recht nützliches Werkzeug.
Ich bin mir sicher, sowas gibt es schon. Trotzdem habe ich mich nicht auf die Suche gemacht, sondern einfach das ganze nach meinen Bedürfnissen umgesetzt.
Sicherlich arbeitet jeder Entwickler etwas anders, so dass es nicht für alle 'brauchbar' ist.
Wer aber sich schnell aus der Tabelle eines SQL-Servers eine Klasse erstellen will, der kann das nutzen.

Es ist kein Allrounder, sondern wirklich nur ein ganz kleines Tool, was nichts anderes macht, als die Felder aus einer Tabelle lesen, die Datentypen zu assoziieren und das ganze in eine Delphi-Klasse umzusetzen. Nicht mehr und nicht weniger. Zusätzlich erstellt es gleich eine TObjectList und packt auch die SQL-Abfrage gleich mit hinein. Eben so, wie ich es immer mache. So dauert jetzt das Erstellen eine Klassen-Unit zu einer neuen Tabelle statt 5-10 Minuten nur noch 15 Sekunden. Für mich eine echte Erleichterung.

Danach braucht man nur noch alles ein wenig nach seinen Bedürfnissen anpassen, dass zu löschen, was man nun nicht benötigt, und fertig.

Wer will kann sich das ja mal anschauen oder auch gerne nutzen.

Zur Zeit wird MySQL, MSSQL, Interbase/Firebird und ODBC unterstützt. Ich könnte aber noch andere DBMS aufnehmen, wenn der Bedarf besteht. Dann müsste ich es aber erst ein wenig umbauen.

Und wie gesagt, ich bin mir bewusst, dass es solche Tools bestimmt schon gibt. Aber ich wollte weder was kaufen, noch mir irgendwelche Softwarepakete installieren, sondern das einfach mal selbst machen.

Exe-Datei und Schreenshot im Anhang.

Feedback (in freundlicher Form) durchaus erwünscht.
Miniaturansicht angehängter Grafiken
tabletoclass2.jpg  
Angehängte Dateien
Dateityp: zip TableToClass.zip (3,29 MB, 117x aufgerufen)
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (24. Sep 2018 um 09:28 Uhr)
 
Hobbycoder
 
#21
  Alt 13. Sep 2018, 16:09
Ich hatte das Control getauscht und dann vergessen die Aligns zu setzen. Sollte jetzt gehen.

Und ich habe ein paar Anpassungen für MSSQL-Server vorgenommen. Ich hoffe, dass er jetzt alle Feldtypen richtig erkennt.
  Mit Zitat antworten Zitat
Delphi.Narium

 
Delphi 7 Professional
 
#22
  Alt 13. Sep 2018, 16:12
Ich habe jetzt mal den MSSQL, ODBC und Firebird mit reingenommen. Ist aber ungetestet. MSSQL bzw. ODBC kann ich selbst auch testen. Aber Firebird habe ich nicht im Einsatz.
@Delphi.Narium: wär nett, wenn du das mal machen könntest.

EDIT: Hab's noch mal neu hochgeladen. Es fehlte noch ein paar Units in den USES
Bei FireBird werden die Tabelle angezeigt, aber keine Felder.

Wenn man 'nen Doppelclick auf 'nen Tabellenamen macht, gibt's 'ne Fehlermeldung:
Code:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 1
Show.
FireBird kennt den Befehl Show nicht. Wenn Du die Infos mit Show ausliest, schmeiß FireBird einfach wieder raus, dann geht das (erstmal) nicht.

ODBC:

Was für eine Eingabe wird bei "Datenbank/Schema" erwartet?

Weder ein Datenquellenname aus der ODBC-Verwaltung noch ein Connectionstring aus 'ner anderen Anwendung funktionieren.

Fehlermeldung in beiden Fällen:
Code:
Es ist ein Fehler beim Verbindungsaufbau aufgetreten

Errorcode: -1

ErrorMessage: -1: [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#23
  Alt 13. Sep 2018, 16:23
Welche Zugriffskomponenten? Möglicherweise bieten diese ja eine Abstraktion für die Ermittlung der Metadaten an.
Markus Kinzler
  Mit Zitat antworten Zitat
EWeiss
 
#24
  Alt 13. Sep 2018, 16:25
Zitat:
Ich hatte das Control getauscht und dann vergessen die Aligns zu setzen. Sollte jetzt gehen.
Na ja nicht wirklich.. aber gut war mein letzter Test.
Viele spass noch damit.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:53 Uhr)
  Mit Zitat antworten Zitat
Hobbycoder
 
#25
  Alt 13. Sep 2018, 16:49
Welche Zugriffskomponenten? Möglicherweise bieten diese ja eine Abstraktion für die Ermittlung der Metadaten an.
UniDAC
Das hatte ich auch erst im Sinn. Entstanden ist das eigentlich aus einer ganz anderen Problematik, wo es mir darum ging die Defaultwerte von Feldern auszulesen. Evtl. macht es sinn, das noch mal aufzugreifen

Na ja nicht wirklich.. aber gut war mein letzter Test.
Viele spass noch damit.
Is okay....den werd ich haben.
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#26
  Alt 13. Sep 2018, 16:55
TUniMetaData
Miniaturansicht angehängter Grafiken
tunimetadata.jpg  
Markus Kinzler
  Mit Zitat antworten Zitat
Hobbycoder
 
#27
  Alt 13. Sep 2018, 17:21
Danke für den Hinweis. Das schaue ich mir mal an.
  Mit Zitat antworten Zitat
Hobbycoder
 
#28
  Alt 14. Sep 2018, 13:46
So, ich habe jetzt ein bisschen weiter daran gearbeitet.
Danke an mkinzler für den Tipp. Ich habe jetzt das ganze daraufhin umgestellt.

Jetzt können ausgelesen werden: MySQL, MSSQL, Interbase/Firebird, ODBC.

Bei MSSQL versuche ich die im Netzwerk verfügbaren SQL-Server zu finden, diese werden dann in der Combobox Server hinterlegt.

Gleiches gilt für ODBC-DSN, sowohl Benutzer-DSN als auch System-DSN. Diese werden aus der Registry gelesen. Ich hoffe mit dem Zugriff auf HKLM (ReadOnly) gibt es keine Probleme.

Wer mag kann das ja mal austesten.

Auch bei der Zuordnung der Datentype, war und ist das nicht so einfach. Während MySQL da sehr kommunikativ ist, bekomme ich von MSSQL und Firebird nur einen Integerwert, der den verwendeten Datentyp repräsentiert. Diesen muss ich umschlüsseln, um so auf den richtigen Datentyp zu kommen. Auch hier können noch Fehler drin sein.

Ich werde weiter an dem Tool arbeiten. Wenn noch andere Wünsche existieren, immer raus damit.
  Mit Zitat antworten Zitat
API
 
#29
  Alt 14. Sep 2018, 14:30
Es möchte Changelog.pas auf dem C:\ Rootfolder erstellen?

---------------------------
Table To Class - Test - 0.0.0.0
---------------------------
Datei "C:\Changelog.pas" kann nicht erstellt werden. Access is denied.
---------------------------
OK
---------------------------
  Mit Zitat antworten Zitat
Klaus01

 
Delphi 10.4 Sydney
 
#30
  Alt 14. Sep 2018, 14:35
Es möchte Changelog.pas auf dem C:\ Rootfolder erstellen?

---------------------------
Table To Class - Test - 0.0.0.0
---------------------------
Datei "C:\Changelog.pas" kann nicht erstellt werden. Access is denied.
---------------------------
OK
---------------------------
..mal versucht manuell eine Datei in C:\ anzulegen?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:07 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