Hi hoika
Erstmal vielenDank für deine Antwort!
Zitat:
Was mich wundert, ist deine unterschiedliche Herangehensweise bei den
SQL-Abfragen.
Das ist relativ einfach: Der Code entstand vor etlicher Zeit unter DelphiXE4 und DBExpress.
Delphi-Quellcode:
Delphi-Quellcode:
SqlString := 'SHOW TABLES';
FDQueryMain.Open(SqlString);
.....
Delphi-Quellcode:
SQLString := 'SELECT Kath_ID as Kath_ID, Kategorie as Kategorie FROM kategorien_tabelle';
FDQueryMain.SQL.Text := SQLString;
FDQueryMain.Open;
Du meinst damit, ich soll bei der unteren open-Anweisung den SQLString auch als Parameter anhängen? Hab ich soeben getan - mit dem selben Ergebnis. Ausserdem nachfolgend eine Prozedur, die genau das tut, was ich von ihr will - auch ohne jeden open-Parameter;
Delphi-Quellcode:
function TFDMySQLDml.GetMaxAllowedPacket : integer;
var SQLString: AnsiString;
begin
SqlString := 'SELECT Variable_Value FROM performance_schema.SESSION_VARIABLES WHERE VARIABLE_NAME = ''MAX_ALLOWED_PACKET''';
FDMySQLQueryInfo.SQL.Text := SqlString;
FDMySQLQueryInfo.Open; // Läuft Problemlos ab.
if not FDMySQLQueryInfo.IsEmpty then
begin
Result := FDMySQLQueryInfo.Fields.Fields[0].AsInteger;
FMaxAllowedPacket := Result;
end;
FDMySQLQueryInfo.Close;
end;
Zitat:
verstehe ich nicht, was soll das As hier bringen?
Das soll sicherstellen, das das Feld im
Query dann auch genauso heisst. Ist nicht auf meinemMist gewachsen. Und wenn ich mich richtig erinnnere, wird dies auch von
MySQL selbst, aber zumindest von Buchautoren, so empfohlen.
Zitat:
Ausserdem ist es nicht Utf8String, sondern nur string.
Das ist - oder war - unter DXE4/DBExpress/der damaligen
MySQL-Installation/Konfiguration des Servers/der Verbindung wegen. Das könnte der Haken an der Sache sein.
Gruss
Delbor
PS:
Zitat:
Vielleicht ist das aber das gleiche (?).
Nein. Der Delphi-Datentyp String ist unter DXE8 (und
IMHO seit Delphi9/10) ein
Unicode-String. Ich weiss aber gerade nicht, ob das Problematisch ist/sein kann.
Unicode => UTF8 : wahrscheinlich schon, umgekehrt aber wohl nicht.