Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Delphi - TSQLQuery pozostawia proces na MySQL nawet po zwolnieniu

Nie odtwarzaj w kółko połączenia ani zapytania. Użyj parametrów zapytania; otwórz połączenie raz, wypełnij parametry zapytania, wykonaj je, zamknij zapytanie (ale nie połączenie), wypełnij parametry zapytania ponownie i wykonaj je ponownie.

Coś takiego (przy użyciu Advantage Database Server, ale koncepcja jest taka sama):

// 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekonwertować cały zestaw znaków bazy danych MySQL i sortowanie do UTF-8?

  2. MySQL:Wybierz dane z tabeli, w której data przypada na bieżący tydzień i bieżący miesiąc

  3. Mysql, przekształć dane z długich / wysokich na szerokie

  4. Jak dołączyć ma wiele tabel relacji i pobierać wyniki według typu

  5. Wynik group_concat nie działa w stanie IN