Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Delphi - TSQLQuery để lại một quy trình trên MySQL ngay cả khi đã được giải phóng

Không tạo lại kết nối của bạn nhiều lần, cũng như truy vấn của bạn. Sử dụng các tham số cho truy vấn; mở kết nối một lần, điền các tham số của truy vấn, thực thi nó, đóng truy vấn (nhưng không phải kết nối), điền lại các tham số truy vấn và thực thi lại.

Một cái gì đó như thế này (sử dụng Máy chủ cơ sở dữ liệu Advantage, nhưng khái niệm giống nhau):

// 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. Thêm khóa ngoại vào bảng hiện có

  2. tạo ngày từ phạm vi ngày

  3. Lập chỉ mục các trường boolean

  4. Thứ tự SQL theo số lượng

  5. Đặt backquote ở chế độ ngủ đông cho tất cả các tên bảng / cột