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:
- MySQLDataMod.BildTabelleInsert2(100, FolderID),
- BildDescribeTabelleInsert(BildTabelleLastId,BildNa me,Bildpfad);
- 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