beim Versuch eine Verbindung zu einer MySql-Datenbank aufzubauen bin ich auf ein seltsames Verhalten gestoßen: als erstes etwas Quellcode:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
aDb:=TMySql50Connection.Create(nil);
aTransaction:=TSqlTransaction.Create(nil);
aDb.Transaction:=aTransaction;
aDb.AfterConnect:=@DbAfterConnect;
aDb.HostName:=edHost.text;
aDb.DatabaseName:=edDatabase.Text;
aDb.UserName:=edUsername.Text;
aDb.Password:=edPassword.Text;
aDb.Connected:=true;
ShowMessage('connected');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
aDb.Connected:=false;
aTransaction.Free;
aDb.Free;
ShowMessage('disconnected');
end;
procedure TForm1.DbAfterConnect(Sender: TObject);
begin
(Sender as TMySql50Connection).ExecuteDirect('SET NAMES ''utf8'' ');
(Sender as TMySql50Connection).ExecuteDirect('SET CHARACTER SET ''utf8'' ');
end;
Nun das Verhalten:
Nach dem Klicken auf Button1 und dann auf Button 2 wird eine Exception angezeigt:
Code: Alles auswählen
Operation cannot be performed on an active Transaction
Ziehe ich eine TMySql50Connection-Komponente auf das Formular (ohne damit irgendwas zu machen), funktioniert es ebenfalls!
Meine Versuche, durch Commit oder Active=false die Exception zu umgehen sind erfolglos geblieben.
Das kann doch so nicht Absicht sein, oder?
greetz, Dets ...