AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken LINQ ORM Delphi (TMS / Devart)
Thema durchsuchen
Ansicht
Themen-Optionen

LINQ ORM Delphi (TMS / Devart)

Ein Thema von taveuni · begonnen am 5. Mär 2019 · letzter Beitrag vom 13. Mär 2019
 
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#3

AW: LINQ ORM Delphi (TMS / Devart)

  Alt 5. Mär 2019, 11:44
Hallöle...
Zitat:
Wie z.B. das SQL Gefrickel im Code zu vermeiden
Dazu braucht es nicht umbedingt ein ORM. Ich verwende eine andere Strategie. Es gibt für jedes DBMS was benutzt wird, ein Interface. Der komplette Zugang zur DB ist in diesem Interface gekapselt. Im Interface werden dann die Ergebnisse der SQL Abfragen in Objekte gewandelt. Die Anwendung kennt eigentlich keine Datenbank. Die Daten könnten auch aus Oma´s Küchenschrank kommen. Dann sage ich nur in der Anwendung (Aufruf procedure im Interface)... "Fülle mir mal die Liste mit den Mitarbeitern". Am Ende habe ich eine TObjectList<TMitarbeiter>...fertsch. Nachteil: Man verzichtet hoffentlich auf datensensitive Controls...denn da funktioniert das nicht.
Zum SQL Gefrickel:
[Meine Lösung]
Meine Statements liegen in einer Ordnerstruktur. Das bedeutet, die Statements sind ausführbar im Editor. Diese Struktur wird als Ressource einkompiliert. Das Interface holt sich die SQL aus der Ressource entsprechend des DBMS. In den Proceduren gibt es nur den Namensaufruf und die Zuordnung der Parameter...fertsch
Delphi-Quellcode:
function TBlubbDatabase.GetSQLByName(SQLName: string): string;
var
  SQLStream: TResourceStream;
  SQLStrings: TStringList;
  SQLStringsDecrypt: TStringList;
begin
  Result := '';
  SQLStrings := TStringList.Create;
  try
    SQLStringsDecrypt := TStringList.Create;
    try
      SQLStream := TResourceStream.Create(HInstance, SQLName, PWideChar(conDatabaseResourceGroupString));
      try
        try
          SQLStrings.LoadFromStream(SQLStream);
          SQLStringsDecrypt.Text := TBlubbToolsCrypt.Decrypt(SQLStrings.Text, conKey); //Verschlüsselung wenn nötig
          SQLStringsDecrypt.Delete(0); // Kommentar entfernen
          Result := SQLStringsDecrypt.Text;
        except
          Result := '';
        end;
      finally
        SQLStream.Free;
      end;
    finally
      SQLStringsDecrypt.Free;
    end;
  finally
    SQLStrings.Free;
  end;
end;
Delphi-Quellcode:
procedure TBlubbDatabase.FillList(List: TBlubbFieldList; TableName: string);
var
  I: Integer;
  Qry: TFDQuery;
  Field: TBlubbField;
begin
  Qry := CreateQuery;
  try
    Qry.SQL.Text := Format(GetSQLByName('BLUBB_TABLE_FIELDLIST'), [TableName]);
    Qry.Open;
    if not Qry.Eof then
    begin
      List.Clear;
      for I := 0 to Qry.Fields.Count - 1 do
      begin
        Field := TBlubbField.Create;
        Field.FieldIndex := I;
        Field.FieldName := Qry.Fields[I].FieldName;
        Field.Fieldype := Qry.Fields[I].DataType;
        List.Add(Field);
      end;
    end;
  finally
    Qry.Free;
  end;
end;
  Mit Zitat antworten Zitat
 


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 09: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-2025 by Thomas Breitkreuz