sql >> Databáze >  >> RDS >> Mysql

Delphi - TSQLQuery zanechávající proces na MySQL i poté, co byl uvolněn

Nevytvářejte znovu a znovu své připojení ani svůj dotaz. Použijte parametry pro dotaz; jednou otevřete připojení, naplňte parametry dotazu, spusťte jej, zavřete dotaz (ale ne připojení), znovu naplňte parametry dotazu a spusťte jej znovu.

Něco takového (pomocí Advantage Database Server, ale koncept je stejný):

// 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. Jak vrátit pozici položky seznamu v MySQL

  2. Datový model životního pojištění

  3. životopis pro XID zvýšen 0:neznámý

  4. Osvědčené postupy pro efektivní ukládání hash md5 v mysql