Einzelnen Beitrag anzeigen

bl3nder

Registriert seit: 18. Aug 2006
89 Beiträge
 
#1

Zeos Query - too many connections

  Alt 19. Aug 2008, 09:15
Datenbank: mysql • Version: 4.1 • Zugriff über: zeos
Hallo,

Ich habe eine Klasse TDatabase in der sich folgendes befindet

Delphi-Quellcode:
  TDatabase = class(TObject)
  private
    FWQuery : TZQuery;
    FDQuery : TZQuery;
    FCQuery : TZQuery;
    FMQuery : TZQuery;
    FSqlConnection : TZConnection;
  public
    constructor Create();
//...
Der Konstruktor dazu sieht so aus:
Delphi-Quellcode:
constructor TDatabase.Create();
begin
  FSqlConnection := TZConnection.Create(FSqlConnection);
  FSqlConnection.HostName := '//'; //Server
  FSqlConnection.User := '//'; //Benutzername
  FSqlConnection.Password := '//'; //Passwort
  FSqlConnection.Database := '//'; //Name der Datenbank
  FSqlConnection.Protocol := 'mysql-4.1';
  FSqlConnection.Port := 3306;

  FWQuery := TZQuery.Create(FWQuery);
  FWQuery.Connection := FSqlConnection;
  FDQuery := TZQuery.Create(FDQuery);
  FDQuery.Connection := FSqlConnection;
  FCQuery := TZQuery.Create(FCQuery);
  FCQuery.Connection := FSqlConnection;
  FMQuery := TZQuery.Create(FMQuery);
  FMQuery.Connection := FSqlConnection;
end;


Nun benutze ich in einer Kind-Klasse in einer Funktion das FCQuery und während FCQuery noch offen ist wird in der selben Funktion noch das FDQuery benutzt. Wenn die Abfragen ausgelesen wurden versuche ich immer die Queries zu schließen und zu zerstören.

Delphi-Quellcode:
FCQuery.Close;

  FCQuery.SQL.Text := 'SELECT';
    FCQuery.SQL.Add('..............etc');

  FCQuery.Open;

  while not FCQuery.EOF do
  begin
    FMyStatus := FCQuery.FieldByName('Status').AsString;
    // etc


    if (...) then
      begin
      //...
        FDList := FMyDSearch.DBSearch('vague',FMyDCriteria); // <-------- Ruft eine Funktion auf in der FDQuery in gleicher Weiße benutzt wird wie FCQuery in dieser Funktion
      //...
      end;

  //...

  FCQuery.Close;
  FCQuery.Destroy;
  //...

Obwohl ich die Queries am Ende immer zerstöre und meine Datenbank 100 Connections zur gleichen Zeit zulässt, kommt der SQL Fehler, dass "too many connections" vorhanden sind.

Vielleicht kann mir jemand sagen wie ich die Zquery richtig disconnecte ?
  Mit Zitat antworten Zitat