Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Umstieg DBExpress -> FireDac

  Alt 27. Nov 2015, 13:10
Datenbank: MySQL • Version: 5.7.9.1 • Zugriff über: DBExpress/FireDac
Hi zusammen

Da ich unter Verwendung der DBExpress-Komponenten keine Verbindung mit meinem MySQL-Server herstellen konnte, hab ich das mal mit FireDac versucht, und das klappte problemlos. Soweit, so gut, sieht man mal davon ab, dass mich die Vielfalt an FireDac-Komponenten fürs erste fast erschlagen hätte - glücklicherweise hab ich noch das gefunden (Die Antwort von Uwe Raabe)...
So denke ich, sollte ich die Sache durchziehen können, indem ich (einfach?) die verwendeten DBExpress-Komponenten durch entsprechende FireDac-Komponenten ersetze.

Als erstes will ich mir die Insert-Prozeduren vornehmen, wobei ich am Code selbst möglichst wenig ändern will. Der Ablauf ist folgender, beginnend mit dem Aufruf der ersten Insert-Prozedur aus einem eigenen FileopenFrame:

Delphi-Quellcode:
  if MySQLDataMod.GetSQLConnection(AUser,APass) then begin
    try
    MySQLDataMod.MySQLConnection.KeepConnection := true;
    Transaction := MySQLDataMod.MySQLConnection.BeginTransaction;
    MySQLDataMod.MySQLConnection.AutoClone := false;
    MySQLDataMod.BildTabelleInsert2(100, FolderID); // Startet die Insert-Prozeduren
    finally
      MySQLDataMod.MySQLConnection.CommitFreeAndNil(Transaction);
      CM_First.ProgressbarDlg.FormStyle := fsnormal;
      CM_First.ProgressbarDlg.Close;
      FreeAndNil(CM_First.ProgressbarDlg);
    end;
  end;
Innerhalb einer Iteration durch eine Pathlist werden hier folgende Prozeduren aufgerufen, die jede ein SQL-Insert-Statement für jeweils eine Tabelle ausführt und jeweils die in der Liste nächste Prozedure aufruft:
  1. MySQLDataMod.BildTabelleInsert2(100, FolderID),
  2. BildDescribeTabelleInsert(BildTabelleLastId,BildNa me,Bildpfad);
  3. kategorien_bildDescribeTabelleInsert(BildDescribeL astID,bildtabelle_idbild);
Dadurch werden Bilder im Bitmapformat in die Datenbank geschrieben, deren Originale sich im RAW-Format am angegebenen Pfad befinden.

Die Umstellung hab ich schon mal damit begonnen:
Delphi-Quellcode:
procedure TFireDacMySQLModul.CreateCategory;
  var ACategory, SQLString: String;
begin
  ACategory := Self.Category;
  SQLString := 'Insert Into kategorien_tabelle(kategorie) Values (:ACategory)';
  if GetSQLConnection(FUser,FPass) then
  begin
    Self.FDQueryMain.Connection := Self.FDConnectionMySql;
    Self.FDQueryMain.Command := SQLString;
    Self.FDQueryMain.Params.CreateParam(ftString,ACategory,ptInput);
    MySQLQuery1.Params[0].AsString := ACategory;
    MySQLQuery1.ExecSQL(false);
    SelectCategoryRecords;
  end;
end;
Meine Unsicherheit hier besteht in der Verwendung der Params: Laut Help gibt es neben Params.Add(); aber auch Params.Create().
In DExpress ist es so, dass jedes Paramlist-Item mit CreateParams erzeugt werden muss. Wie sich das unter FireDac verhält, habe ich bislang noch nicht finden können.
Die oben aufgelisteten Prozeduren arbeiten mit mehreren Createparams...
Einzig die an Createparams übergebenen Parameter scheinen gleich zu sein; die ersten 2 sind es, soviel ich bis jetzt gefunden habe, sicher.

Vielen Dank für eure Antworten!

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (27. Nov 2015 um 13:18 Uhr)
  Mit Zitat antworten Zitat