![]() |
Datenbank: verschiedene • Version: n/a • Zugriff über: n/a
SQLBuilder (nonvisual)
Hallo,
ich suche einen SQLBuilder. Aussehen sollte das in etwa so:
Delphi-Quellcode:
das Ergebnis sollte dann so aussehen:
stm := TSQLStatement.Create();
stm.Select('Field1') .Select('Field2') .From('Table') .Where(TCriteria.Create() .Criteria('Field1').EQ('test')) .OrderBy('Field2')
Code:
Hat jemand sowas schonmal gesichtet oder vlt sogar selbst gebaut?
select Field1, Field2 from Table where Field1 = 'test' order by Field2
Gruß schlecki |
AW: SQLBuilder (nonvisual)
Habs mal in PHP gesehen, aber unter Delphi leider noch nie. Hab es schon mal selbst probiert, aber war mir dann zu kompliziert. Bin daher sehr schnell auf eine "normale" Query umgestiegen, d.h. halt einen String geschrieben. Das ist auch schneller änderbar imho.
|
AW: SQLBuilder (nonvisual)
Es gibt doch auch ein paar OR-Mapper-Frameworks für Delphi. Wurde hier im Forum schon öfter verlinkt.
|
AW: SQLBuilder (nonvisual)
Mal eine ganz blöde Frage nebenbei: Wofür soll sowas gut sein? :gruebel:
|
AW: SQLBuilder (nonvisual)
Ist ganz nett, wenn man nicht selbst den Query-String aufbauen will, aber eigentlich reine Bequemlichkeit :wink: Aber sobald man an etwas komplexere Queries stößt ist das Konzept eher umständlich.
|
AW: SQLBuilder (nonvisual)
Ich habe hier eine, nun, gewachsene Anwendung. Da stehen so tolle sachen drin wie:
Delphi-Quellcode:
Mit diesen Objekten könnte man das mMn besser auseinandernehmen und ordnen.
Query := TQuery.Create(nil);
Query.SQL.Add('select'); Query.SQL.Add(' *'); Query.SQL.Add('from'); Query.SQL.Add(' table'); Query.SQL.Add('where'); Query.SQL.Add(' 1 = 1'); Query.SQL.Add('order by'); { ... viel später } Query.SQL[1] := 'third.field1, second.field2, table1.*'; Query.SQL[3] := 'table1, table3 third, table4 second'; Query.SQL[5] := 'table1.field = third.field and second.field2 = table1.field3'; AddRightCondition(Query.SQL, {...}); Query.SQL.Add('table1.field'); Einen kompletten OR-Mapper kann ich hier nicht einsetzen. Mit dem Builder, wie er mir vorschwebt könnte man einzelne Bereiche der Query dann leichter modifizieren und am Schuß das SQL erzeugen lassen. Naja, mal sehen, vlt werd ich da mal was zu bauen ;) |
AW: SQLBuilder (nonvisual)
Daher hasse ich diese TTable, TDataSource und was weiß ich noch alles... Einmal eine Query ausführen, die Daten in Objekte gießen und gut ist das ganze. Wenn ich was einfügen/updaten will, dann muss ich halt neben der Query auch noch die Daten weiterreichen und ab damit an die Datenbank.
|
AW: SQLBuilder (nonvisual)
das hat doch hier nix mit TTable oder TDataSource zu tun?!
|
AW: SQLBuilder (nonvisual)
Das sieht aus wie LINQ unter .NET.
In der ![]() Im Rahmen eines ORM macht ein solcher QueryBuilder auch durchaus Sinn, aber in einer Anwendung welche auf TDataset und Konsorten basiert reicht ein FilterBuilder(=baut ein WHERE Statement zusammen) vollkommen aus. Denn kann man sich schnell selbst basteln, hab ich für mein ORM auch gemacht. PS: ![]() |
AW: SQLBuilder (nonvisual)
Hi Schlecki,
ich schreibe soetwas dauernd ... aber wenn Du einer Function / Procedure die Feldnamen sowieso mitgeben musst, kannst das ganze doch gleich in einer Oberfläche macht. Sonst kannst Du doch sowieso nur die gesamte Feldliste "automatisch" in das SQL Statement einlesen lassen; und wie siehts mit der WHERE Clause aus, woher bekommst Du die? Wie willst Du denn den ORDER definierten, wenn nicht manuell?? Mittlerweile schreib ich mir immer noch ein paar Zeilen dazu, damit ich die Statements speichern und auch wieder per Progi öffnen kann. Gruß Rolf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 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