![]() |
Datenbank: MySql • Version: 5.x • Zugriff über: MyDac
MyDac "show status" antwort abhohlen
Hi,
ich brauche mal eine kleine Hilfe. Ich hab nun MyDac. Die Demo die bei ist, ist sehr groß. Da was zu finden scheint nicht einfach zu sein. Ich habe auf der Form nun TMyConnection, TMySQLMonitor und TMyQuery. Nun habe ich folgendes gemacht, um erstmal reinzukommen.
Delphi-Quellcode:
Nun finde ich leider nicht, wo bzw. wie ich die antwort abhohlen kann. Wenn jemand so nett wäre um mir mit einem 3zeiler aushelfen könnte, wäre ich wahnsinnig dankbar.
MyQuery1.SQL.Add('show status;');
MYQuery1.ExecSQL; Danke im voraus |
AW: MyDac "show status" antwort abhohlen
Delphi-Quellcode:
?
MyQuery1.Open
|
AW: MyDac "show status" antwort abhohlen
Probiere mal folgendes :
Delphi-Quellcode:
(Nur so runtergetippt.)
MyQuery1.SQL.Clear;
MyQuery1.SQL.Add('SHOW Status;'); MyQuery1.Open; while not MyQuery1.Eof do begin Memo1.Lines.Add(MyQuery1.FieldsByName('VariableName').AsString + ' = ' + MyQuery1.FieldsByName('Value').AsString); MyQuery1.Next; end; MyQuery1.Close; Nun sollten Dir alle Werte in einem Memo angezeigt werden. |
AW: MyDac "show status" antwort abhohlen
@RWarnecke,
das ist schonmal ein Anfang. Ich danke dir. Bei FieldByName ist nur das s zuviel. Nun muss ich nur noch finden (Anzahl ist 25 laut MyQuery1.FetchRows) wie ich an die Feldnamen komme. Vielen dank erstmal :thumb: EDIT: Aus 'VariableName' noch 'Variable_Name' machen, dann rennt deine demo einwanfrei. Nochmals vielen dank! |
AW: MyDac "show status" antwort abhohlen
Jedes DataSet lässt dich durch die Felder iterieren um z.B. an die Feldnamen zu kommen.
Einfach mal schauen nach ![]() ![]() |
AW: MyDac "show status" antwort abhohlen
Danke. Ich habe bisher immer mit DirectMySql etwas gemacht. Deswegen stand ich grade etwas wie "Ochse vorm Berg".
Aber da DirectMySql nur bis SSL Verion 0.9.6 rennt, wollte ich umsteigen. Und Deddy hat mir den Tipp mit Devart gegeben. Da muss ich mich erstmal "reinfummeln". Da ich aber nun die "Grunsätzlichen" sachen kenne, wird wohl 1% von dem sein was MyDac kann, geht es nun aufwärts. Das ist einfach frustrierend wenn man Stunden lang etwas versucht bzw. sucht und findet es nicht. Nochmal danke |
AW: MyDac "show status" antwort abhohlen
Hallo, ich habe noch eine frage. Das MyQuery.Open, braucht man das? Wenn SQL leer ist, gibt es einen fehler. Aber wenn ich etwas in SQL drin habe, kann ich sofort das Execute ohne open machen. Ich habe mal eine kleine schleife gemacht, die mir alle Datenbanke gibt, und dann alle Tabellen ausliest.
Wäre nett wenn mir jemdand sagen könnte ob man das so lassen kann, oder ob ich zu kompliziert gedacht habe. Danke im voraus
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var line :String; begin MyConnection1.Connect; MyQuery1.SQL.Clear; Memo1.Clear; MyQuery1.SQL.Add('SHOW DATABASES;'); MyQuery1.Open; MyQuery1.First; // MyQuery2.Open; while not MyQuery1.Eof do begin line:=MyQuery1.FieldList.Fields[0].AsString; Memo1.Lines.Add(MyQuery1.FieldList.Fields[0].AsString); MYQuery2.SQL.Clear; MyQuery2.SQL.Add('SHOW TABLES FROM '+line+';'); MyQuery2.Execute; while ( not MyQuery2.Eof ) do begin Memo1.Lines.Add(MyQuery2.FieldList.Fields[0].AsString); MyQuery2.Next; end; MyQuery1.Next; end; MyQuery1.Close; MyQuery2.Close; MyConnection1.Disconnect; end; |
AW: MyDac "show status" antwort abhohlen
Moin...
Grundsätzliches: 1. Open führt einen Befehl aus und bekommt eine Ergebnismenge zurück. 2. Execute führt nur einen Befehl aus. ...jetzt müßtest du deinen Fehler auch finden :zwinker: |
AW: MyDac "show status" antwort abhohlen
Die frage die ich mir gestellt habe, ist, dauert das ewige Open/Close nicht zu lange? Zumal das ja denn in einer Schleife wäre.
|
AW: MyDac "show status" antwort abhohlen
Mal ganz abgesehen davon, dass man solche Operationen nicht mit Komponenten (
Delphi-Quellcode:
,
MyQuery1
Delphi-Quellcode:
) machen sollten, die man auf eine Form klatscht ist es auch besser diese Funktionen aufzuteilen.
MyQuery2
Delphi-Quellcode:
procedure GetDatabaseNames( AConnection : TMyConnection; AResult : TStrings );
var LQuery : TMyQuery; LField : TField; begin AResult.BeginUpdate; try AResult.Clear; LQuery := TMyQuery.Create( nil ); try LQuery.SQL.Text := 'SHOW DATABASES'; LQuery.Connection := AConnection; LQuery.Open; try LField := LQuery.FieldByName( 'Database' ); while not LQuery.EOF do begin AResult.Add( LField.AsString ); LQuery.Next; end; finally LQuery.Close; end; finally LQuery.Free; end; finally AResult.EndUpdate; end; end; procedure GetTableNames( AConnection : TMyConnection; const ADatabaseName : string; AResult : TResult ); var LQuery : TMyQuery; LField : TField; begin AResult.BeginUpdate; try AResult.Clear; LQuery := TMyQuery.Create( nil ); try LQuery.SQL.Text := 'SHOW TABLES FROM ' + ADatabaseName; LQuery.Connection := AConnection; LQuery.Open; try LField := LQuery.Fields.Fields[0]; while not LQuery.EOF do begin AResult.Add( LField.AsString ); LQuery.Next; end; finally LQuery.Close; end; finally LQuery.Free; end; finally AResult.EndUpdate; end; end; procedure GetDatabaseTableNames( AConnection : TMyConnection; AResult : TStrings ); var LDatabases : TStringList; LDatabase : string; LTables : TStringList; LTable : string; begin LDatabases := nil; LTables := nil; AResult.BeginUpdate; try AResult.Clear; LDatabases := TStringList.Create; LTables := TStringList.Create; GetDatabaseNames( AConnection, LDatabases ); for LDatabase in LDatabases do begin GetTableNames( AConnection, LDatabase, LTables ); for LTable in LTables do begin AResult.Add( Format( '%s.%s', [LDatabase, LTable] ) ); end; end; finally AResult.EndUpdate; LTables.Free; LDatabases.Free; end; end; procedure TForm1.Button1Click( Sender : TObject ); begin GetDatabaseTableNames( MyConnection1, Memo1 ); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz