Einzelnen Beitrag anzeigen

taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SDAC Connection...

  Alt 27. Okt 2021, 15:01
Bei mir sieht das seit Jahren immer so aus:

Delphi-Quellcode:
TServerDataModule = class(TDataModule)
private
FMsConnection: TMSConnection;
procedure Init;

var
  ServerDataModule: TServerDataModule;

implementation

procedure TServerDataModule.Init;
begin

  FMsConnection:= TMSConnection.Create(Nil);
  FMsConnection.Server:= IniFile.ReadString('DataBase','Server','localhost');
  FMsConnection.Database:= IniFile.ReadString('DataBase','Database','DatabaseName');
  FMsConnection.Username:= IniFile.ReadString('DataBase','UserName','UserName');
  FMsConnection.Password:= Decrypt(IniFile.ReadString('DataBase','Password','Password'),READ_KEY);

  ConnectDatabase; // da wird in einem Thread versucht zu verbinden.
end;


procedure TServerDataModule.IrgendeineDatebankfunktion;
var
  Qry: TMSQuery;
  Conn: TMSConnection;
begin
  Conn:= TMSConnection.Create(Nil);
  Conn.Assign(self.FMsConnection);
  Qry:= TMSQuery.Create(Nil);
  Qry.Connection:= Conn;
  Try
      Qry.SQL.Text:= 'SELECT * FROM whatever WHERE id =:id';
      Qry.ParamByName('id').AsInteger:= 12;
      Qry.Open;
      while not Qry.Eof do
      begin

        Qry.Next;
      end;
    end;
  Finally
    Conn.Free;
    Qry.Free;
  End;
end;
Das Assign der "globalen" Connection erlaubt problemloses Multithreading.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat