अपना कनेक्शन बार-बार न बनाएं, न ही अपनी क्वेरी। क्वेरी के लिए पैरामीटर का उपयोग करें; एक बार कनेक्शन खोलें, क्वेरी के पैरा को पॉप्युलेट करें, इसे निष्पादित करें, क्वेरी को बंद करें (लेकिन कनेक्शन नहीं), क्वेरी पैरामीटर्स को फिर से पॉप्युलेट करें, और इसे फिर से निष्पादित करें।
कुछ इस तरह (एडवांटेज डेटाबेस सर्वर का उपयोग करते हुए, लेकिन अवधारणा समान है):
// 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.