Perenquen
16-01-2012, 15:00:06
Buenas. Estoy realizando una conexión a una base de datos MySQL utilizando ADO y me surgió un pequeño problema. Con una única conexión todo funciona bien.
procedure TFP.Button1Click(Sender: TObject);
var
AQ1,AQ2 : TADOQuery;
begin
AQ1 := TADOQuery.Create(nil);
AQ1.Connectionstring := 'DRIVER={MySQL ODBC 5.1 Driver};SERVER=192.168.1.9;test;USER=root;PASSWORD=123456;OPTION=3';
AQ1.SQL.Text := 'SELECT * FROM T1'; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como se ha ESTABLECIDO la conexión
AQ1.open;
AQ1.close;
AQ1.free; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como se ha CERRADO la conexión
showmessage('OK');
end;
Como dije hasta aquí no había tenido problemas, pero cuando intento ejecutar dos consultas no soy capaz de liberar la conexión.
procedure TFP.Button1Click(Sender: TObject);
var
AQ1,AQ2 : TADOQuery;
begin
AQ1 := TADOQuery.Create(nil);
AQ1.Connectionstring := 'DRIVER={MySQL ODBC 5.1 Driver};SERVER=192.168.1.9;test;USER=root;PASSWORD=123456;OPTION=3';
AQ1.SQL.Text := 'SELECT * FROM T1'; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como se ha ESTABLECIDO la PRIMERA conexión
AQ1.open;
AQ2 := TADOQuery.Create(nil);
AQ2.Connectionstring := 'DRIVER={MySQL ODBC 5.1 Driver};SERVER=192.168.1.9;test;USER=root;PASSWORD=123456;OPTION=3';
AQ2.SQL.Text := 'SELECT * FROM T2'; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como se ha ESTABLECIDO la SEGUNDA conexión
AQ2.open;
AQ2.close;
AQ2.free; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como NO se ha CERRADO la SEGUNDA conexión
AQ1.close;
AQ1.free; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como se han CERRADO las DOS conexiones
showmessage('OK');
end;
Obviamente estoy haciendo algo mal al trabajar con ADO. Alguno tiene alguna idea de que podría ser.
Gracias.
procedure TFP.Button1Click(Sender: TObject);
var
AQ1,AQ2 : TADOQuery;
begin
AQ1 := TADOQuery.Create(nil);
AQ1.Connectionstring := 'DRIVER={MySQL ODBC 5.1 Driver};SERVER=192.168.1.9;test;USER=root;PASSWORD=123456;OPTION=3';
AQ1.SQL.Text := 'SELECT * FROM T1'; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como se ha ESTABLECIDO la conexión
AQ1.open;
AQ1.close;
AQ1.free; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como se ha CERRADO la conexión
showmessage('OK');
end;
Como dije hasta aquí no había tenido problemas, pero cuando intento ejecutar dos consultas no soy capaz de liberar la conexión.
procedure TFP.Button1Click(Sender: TObject);
var
AQ1,AQ2 : TADOQuery;
begin
AQ1 := TADOQuery.Create(nil);
AQ1.Connectionstring := 'DRIVER={MySQL ODBC 5.1 Driver};SERVER=192.168.1.9;test;USER=root;PASSWORD=123456;OPTION=3';
AQ1.SQL.Text := 'SELECT * FROM T1'; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como se ha ESTABLECIDO la PRIMERA conexión
AQ1.open;
AQ2 := TADOQuery.Create(nil);
AQ2.Connectionstring := 'DRIVER={MySQL ODBC 5.1 Driver};SERVER=192.168.1.9;test;USER=root;PASSWORD=123456;OPTION=3';
AQ2.SQL.Text := 'SELECT * FROM T2'; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como se ha ESTABLECIDO la SEGUNDA conexión
AQ2.open;
AQ2.close;
AQ2.free; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como NO se ha CERRADO la SEGUNDA conexión
AQ1.close;
AQ1.free; // Después de esta instrucción puedo ver con un SHOW PROCESSLIST como se han CERRADO las DOS conexiones
showmessage('OK');
end;
Obviamente estoy haciendo algo mal al trabajar con ADO. Alguno tiene alguna idea de que podría ser.
Gracias.