sql >> Database teknologi >  >> RDS >> Mysql

Delphi - TSQLQuery efterlader en proces på MySQL, selv efter at være blevet frigivet

Genopret ikke din forbindelse igen og igen, og heller ikke din forespørgsel. Brug parametre til forespørgslen; åbn forbindelsen én gang, udfyld forespørgselsparametrene, udfør den, luk forespørgslen (men ikke forbindelsen), udfyld forespørgselsparametrene igen, og udfør den igen.

Noget som dette (ved hjælp af Advantage Database Server, men konceptet er det samme):

// Both Create() calls should be followed by try..finally to ensure they're 
// cleaned up after. Omitted for brevity.
Conn := TAdsConnection.Create(nil);
// Configure connection parameters here
Conn.Open;

Qry := TAdsQuery.Create(nil);
Qry.AdsConnection := Conn;
Qry.SQL.Add('INSERT INTO SOMETABLE (COL1, COL2, COL3)');
Qry.SQL.Add('VALUES (:COL1, :COL2, :COL3)');
while not OtherTable.Eof do
begin
  Qry.ParamByName('COL1').AsInteger := OtherTable.FieldByName('COL1').AsInteger;
  Qry.ParamByName('COL2').AsString := OtherTable.FieldByName('COL2').AsString;
  Qry.ParamByName('COL3').AsDateTime := OtherTable.FieldByName('COL3').AsDateTime;
  Qry.ExecSQL;
  Qry.Close;
  OtherTable.Next;
end;
// Free query
Conn.Close;
// Free connection.


  1. Den sikreste måde at få sidste post-id fra en tabel

  2. Sådan får du forskellen mellem to datoer afrundet til timer

  3. Sådan fungerer Extract() i PostgreSQL

  4. MySQL Workbench afbryder forbindelsen, når den er inaktiv