Nachdem ich den Quelltext euren Hinweisen nach korrigiert hatte wollteich die Prozedur natürlich starten, leider bekam ich die altbekannte Meldung, mit den Grafischen Steuerelementen war das alles kein problem und nach setzen der Attribute baute er eine verbindung auf, allerdings in der unit funktioniert es leider nicht!
Ich hoffe irgendwer weiß Rat, ich glaube das ich den Fehler in diesem Leben nicht mehr finde!
unit SQL_;
interface
uses
Classes, SysUtils, mysql50conn, mysql51conn, sqldb;
var
MySQLConnection1:TMySQL50Connection;
SQLQuery1:TSQLQuery;
SQLTransaction1:TSQLTransaction;
procedure Ausgelagert_1;
implementation
procedure Ausgelagert_1;
begin
MySQLConnection1:=TMySQL50Connection.create(MySQLConnection1);
SQLQuery1:=TSQLQuery.create(SQLQuery1);
SQLTransaction1:=TSQLTransaction.create(SQLTransaction1);
SQLQuery1.Database:=MySQLConnection1;
SQLQuery1.Transaction:=SQLTransaction1;
try
if MySQLConnection1.Connected then MySQLConnection1.Close;
MySQLConnection1.HostName:='192.168.178.45';
MySQLConnection1.UserName:='...';
MySQLConnection1.Password:='...';
MySQLConnection1.DataBaseName:='...';
if MySQLConnection1.Connected then MySQLConnection1.Connected := false;
MySQLConnection1.Connected := true;
MySQLConnection1.Open;
if MySQLConnection1.Connected then
begin
SQLQuery1.SQL.Text:='SELECT ...';
SQLQuery1.Open;
while not SQLQuery1.EOF do
begin
SQLQuery1.Next;
end;
SQLQuery1.Close;
end;
except
// GEHT NICH
end;
end;
end.
sollte eigentlich gehen. Besser ist anstatt Nil ein Formular an zu geben, damit wird beim Schließen des Formulars (TForm) automatisch der Speicher richtig aufgeräumt.
PS: Ich nutze nur die ZEOS Komponenten, damit klappt das.
Ich glaube so wie du machst geht das nicht: MySQLConnection1:=TMySQL50Connection.create(MySQLConnection1);
Programmierst du schon lange mit Pascal/Delphi oder ist das dein erstes Projekt?
Versuch mal so:
procedure Ausgelagert_1;
begin
MySQLConnection1:=TMySQL50Connection.create(nil);
MySQLConnection1.HostName:='localhost'; //wenn MySql auf der gleichen Rechner läuft
MySQLConnection1.UserName:='root'; //Es muß richtige Username sein, "root" ist standard wenn du nicht geändert hast
MySQLConnection1.Password:=''; //richtiges Passwort muß es sein, standard ist nichts
MySQLConnection1.DataBaseName:='mysql' ; //Es MUSS richtige Datenbankname sein, 'mysql' ist systemdatenbank, änder das mit deine Datenbankname
MySQLConnection1.Connected:=true;
try
SQLTransaction1:=TSQLTransaction.create(nil);
SQLTransaction1.DataBase:=MySQLConnection1;
SQLTransaction1.Active:=true;
SQLQuery1:=TSQLQuery.create(nil);
SQLQuery1.DataBase:=MySQLConnection1;
SQLQuery1.Transaction:=SQLTransaction1;
if MySQLConnection1.Connected then begin
SQLQuery1.SQL.Text:='SELECT * FROM user'; //Das musst du anpassen, diese Tabelle ist in "mysql"-Db vorhanden
SQLQuery1.Open;
if SQLQuery1.RecordCount>0 then //Als Beispiel
Writeln('== '+SQLQuery1.Fields[0].FieldName); //...Spaltentitel ausgeben
while not SQLQuery1.EOF do begin
Writeln(SQLQuery1.Fields[0].AsString); //.. 1.spaltenwerte ausgeben
SQLQuery1.Next;
end;
SQLQuery1.Close;
end;
finally
SQLQuery1.Free;
SQLTransaction1.Free;
MySQLConnection1.Free;
end;
end;