AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MyDac "show status" antwort abhohlen
Thema durchsuchen
Ansicht
Themen-Optionen

MyDac "show status" antwort abhohlen

Ein Thema von DelTurbo · begonnen am 4. Jan 2014 · letzter Beitrag vom 5. Jan 2014
Antwort Antwort
Seite 1 von 2  1 2      
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#1

MyDac "show status" antwort abhohlen

  Alt 4. Jan 2014, 10:35
Datenbank: MySql • Version: 5.x • Zugriff über: MyDac
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:
    MyQuery1.SQL.Add('show status;');
    MYQuery1.ExecSQL;
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.

Danke im voraus
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: MyDac "show status" antwort abhohlen

  Alt 4. Jan 2014, 10:45
MyQuery1.Open ?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

AW: MyDac "show status" antwort abhohlen

  Alt 4. Jan 2014, 10:46
Probiere mal folgendes :
Delphi-Quellcode:
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;
(Nur so runtergetippt.)

Nun sollten Dir alle Werte in einem Memo angezeigt werden.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#4

AW: MyDac "show status" antwort abhohlen

  Alt 4. Jan 2014, 10:59
@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

EDIT:
Aus 'VariableName' noch 'Variable_Name' machen, dann rennt deine demo einwanfrei. Nochmals vielen dank!
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!

Geändert von DelTurbo ( 4. Jan 2014 um 11:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: MyDac "show status" antwort abhohlen

  Alt 4. Jan 2014, 11:18
Jedes DataSet lässt dich durch die Felder iterieren um z.B. an die Feldnamen zu kommen.

Einfach mal schauen nach Delphi-Referenz durchsuchenTDataSet.Fields -> Delphi-Referenz durchsuchenTFields
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 4. Jan 2014 um 11:22 Uhr)
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#6

AW: MyDac "show status" antwort abhohlen

  Alt 4. Jan 2014, 11:27
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
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#7

AW: MyDac "show status" antwort abhohlen

  Alt 5. Jan 2014, 11:51
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;
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#8

AW: MyDac "show status" antwort abhohlen

  Alt 5. Jan 2014, 12:26
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
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#9

AW: MyDac "show status" antwort abhohlen

  Alt 5. Jan 2014, 12:32
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.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: MyDac "show status" antwort abhohlen

  Alt 5. Jan 2014, 12:36
Mal ganz abgesehen davon, dass man solche Operationen nicht mit Komponenten (MyQuery1 , MyQuery2 ) machen sollten, die man auf eine Form klatscht ist es auch besser diese Funktionen aufzuteilen.
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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 5. Jan 2014 um 12:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz