![]() |
Kleines Tool: SQL - TableToClass
Liste der Anhänge anzeigen (Anzahl: 2)
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. |
AW: Kleines Tool: SQL-Table to Class
Liste der Anhänge anzeigen (Anzahl: 1)
Du könntest dir auch mal Marshmallow/Sping4D ansehen.
Dort ist auch ein entsprechendes Tool beinhaltet.
Delphi-Quellcode:
unit ORM.Model.Employee.CUSTOMER;
interface uses Spring.Persistence.Mapping.Attributes, Spring.Persistence.Core.Graphics; type [Entity] [Table('CUSTOMER', '')] TCUSTOMER = class private FCUST_NO: Integer; FCUSTOMER: string; FCONTACT_FIRST: string; FCONTACT_LAST: string; FPHONE_NO: string; FADDRESS_LINE1: string; FADDRESS_LINE2: string; FCITY: string; FSTATE_PROVINCE: string; FCOUNTRY: string; FPOSTAL_CODE: string; FON_HOLD: string; public [Column('CUST_NO',[cpRequired,cpPrimaryKey,cpNotNull],10,0)] property CUST_NO: Integer read FCUST_NO write FCUST_NO; [Column('CUSTOMER',[cpRequired,cpNotNull],25)] property CUSTOMER: string read FCUSTOMER write FCUSTOMER; [Column('CONTACT_FIRST',[],15)] property CONTACT_FIRST: string read FCONTACT_FIRST write FCONTACT_FIRST; [Column('CONTACT_LAST',[],20)] property CONTACT_LAST: string read FCONTACT_LAST write FCONTACT_LAST; [Column('PHONE_NO',[],20)] property PHONE_NO: string read FPHONE_NO write FPHONE_NO; [Column('ADDRESS_LINE1',[],30)] property ADDRESS_LINE1: string read FADDRESS_LINE1 write FADDRESS_LINE1; [Column('ADDRESS_LINE2',[],30)] property ADDRESS_LINE2: string read FADDRESS_LINE2 write FADDRESS_LINE2; [Column('CITY',[],25)] property CITY: string read FCITY write FCITY; [Column('STATE_PROVINCE',[],15)] property STATE_PROVINCE: string read FSTATE_PROVINCE write FSTATE_PROVINCE; [Column('COUNTRY',[],15)] property COUNTRY: string read FCOUNTRY write FCOUNTRY; [Column('POSTAL_CODE',[],12)] property POSTAL_CODE: string read FPOSTAL_CODE write FPOSTAL_CODE; [Column('ON_HOLD',[],1)] property ON_HOLD: string read FON_HOLD write FON_HOLD; end; implementation end. |
AW: Kleines Tool: SQL-Table to Class
Mach ich. Danke.
Aber ich schrieb ja Zitat:
|
AW: Kleines Tool: SQL-Table to Class
So, für alle, die es interessiert, ich habe noch ein paar kleine Verbesserungen vorgenommen:
- Kleine Fehler beseitigt - Eigene Connection und eigene Query-Klasse kann angegeben werden (sonst ist es wirklich nur für mich nutzbar) - Doppelklick auf die Feldliste zum Ändern des DatenTyps - AutoInc wird erkannt und nicht mehr in den Inserts oder Updates als Feld verwendet - Eine Sortierung zu jeder Property wird mit angelegt (Kann eingestellt werden) - Ein IndexOf zu jedem Property wird mit angelegt (kann eingestellt werden) - Weiterhin kann man für jede Feld dieses einzeln festlegen (Doppelklick auf Feld) Die neue Version liegt im Anhang des ersten Post. |
AW: Kleines Tool: SQL-Table to Class
Hab's mal probiert. Ich kann leider nur mysql auswählen.
Sowas hab ich dann mal aus einer (alten) xampp Installation gestartet, bekomme aber kein Connect. Es passiert nichts. Der Verbindungsdialog (Connection Manager) bleibt stehen. Phpmyadmin geht dagegen. Test Parameter: Port laut xampp Server localhost user root Schema verschiedene laut phpmyadmin probiert. xampp, mysql sind auch 32bit wie die Anwendung. Ja und jetzt wo ich nachschaue, mysql ist mariadb 10.1.26 Klick auf Abbrechen in Connection Manager bringt AV, die immer mehr werden. P.S.: Avast macht ziemlich Wind, aber kennt man ja schon. |
AW: Kleines Tool: SQL-Table to Class
Hätte das nur auf meiner Entwicklungsmaschine getestet ;-) war vielleicht etwas zu Voreilig.
Und jetzt wo du‘s sagst....ein bisschen Errorhandling im Connection-Manager wär auch nicht schlecht ;-) Ich werd das morgen mal auf einer Maschine Testen, die Jungfräulich ist.. ich könnte auch mal madExcept aktivieren. Dann kann man mit verpatztem.Errorhandling etwas mehr anfangen ;-) Danke für die Rückmeldung. Wenn ich‘s dann korrigiert habe, würdest du das nochmal Testen? |
AW: Kleines Tool: SQL-Table to Class
Erfahrungsgemäß sind es ja irgendwelche lokalen Konstanten die woanders nicht passen, feste Verzeichnisse usw.
Ach und was mir einfällt, ich war so frech, das direkt aus dem ZIP zu starten. Und noch schlimmer: altes Windows 7. Also wer weiß, was fehlt.. |
Dieses Thema wurde am "12. Sep 2018, 14:38 Uhr" von "mkinzler" aus dem Forum "Sonstige Werkzeuge" in das Forum "Software-Projekte der Mitglieder" verschoben.
|
AW: Kleines Tool: SQL-Table to Class
So jetzt läuft es!
Das ist ja schon recht umfangreich, was Du generierst! Ich hab mal ein Test auf phpmyadmin Schema laufen lassen. Sicher wäre es nun sinnvoll, die generierten Klassen zu testen. Dazu werde ich sobald nicht kommen :) @Conntection Manager Ich finde es gewöhnungsbedürftig, dass er nicht zu geht nach Verbindung (falls das so sein soll), sonst geht es nur über X. Trennen und Verbinden sind nicht richtig gekoppelt. Es geht scheinbar eine Verbindung mit mehreren DB. Fokus und Aktion passen dann nicht mehr. Default und Default alle habe ich nicht verstanden, Default produziert AV. Ich hab derzeit keinen Anwendungsfall, aber ich denke, es kann einem viel Arbeit abnehmen. Frag mich gerade, ob sowas nicht in die IDE gehört. (Oder ist es schon drin, außer auf den billigen Plätzen?) |
AW: Kleines Tool: SQL-Table to Class
Zitat:
Zitat:
Zwar müssen die speziellen Anpassungen an mein Projekt trotzdem noch händisch erfolgen, aber ich merke jetzt schon das ich enorm Zeit einspare. Zitat:
Zitat:
Um z.B. eine Funktion zu erstellen, die eine bestehende Klasse um weiter DB-Felder zu erweitern, müsste ich die Unit parsen um manuelle Veränderungen nicht zu eliminieren. Das würde mir aber zu aufwendig. Dafür kann man ja mit dem Tool die Tabelle auslesen, und die benötigten Teile händisch per Copy&Paste rüber kopieren. Was vielleicht noch Sinn machen würde, wäre einen Interface-Teil zu integrieren. Aber dazu müsste ich mich erst mal mit Interfaces befassen, damit ich das machen könnte. Ansonsten habe ich eine neue Version hochgeladen. Ich habe sie um ein paar nette Features erweitert. Unter Anderem in der Hinsicht, dass das Tool sich jetzt die Einstellungen zu jeder Tabelle einzeln wegschreibt (INI-Datei im gleichen Verzeichnis wie die EXE), und automatisch wieder lädt, sobald diese Tabelle wieder angeklickt wird. Und ein paar andere Kleinigkeiten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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 by Thomas Breitkreuz