Métodos BeginTrans y CommitTrans
Mi problema es que no sé cuando ni como utilizar BIEN los
BeginTrans y CommitTrans (métodos de una conexión ADO).
Soy Técnico Superior en Desarrollo de Aplicaciones Informáticas y cuando estudiaba el ataque a bases de datos desde VB con ADO esto no se nos explicó bien.
Nos decían que ADO funciona de una manera asíncrona y que cuando haces un movenext o un update éste se queda ejecutándose y pasa el control a la siguiente instrucción en VB.
Es decir, que si hacíamos un movenext y en la siguiente instrucción consultábamos un campo del recordset podría pasar que el valor fuera el del registro anterior (vamos, que no le habría dado tiempo a hacer el movenext).
Para solucionar esto lo que "nos decían" que hiciéramos es que a la propiedad ActiveConnection del control ADO le asignáramos una conexión ADO conectada a la misma BD para luego utilizar los métodos BeginTrans y CommitTrans.
Un ejemplo de esto sería:
...
...
dim conn as new adodb.connection
set ado1.activeconnection=conn
Conn. Begintrans
Ado1.recordset.movenext
conn.committrans
...
...
De esta manera se "solucionaba" el problema de que la tecnología ADO funcionara de manera asíncrona.
¿Es todo esto cierto?
¿Existen métodos de los recordset que funcionan de manera asíncrona? ¿Quizás el update?
¿Cómo debo utilizar los BeginTrans y los CommitTrans? ¿Debería utilizarlos entre métodos de un recordset que funcionen de forma asíncrona (si es que existen) o debería utilizarlos con el sentido más amplio de transacción?
GRACIAS y espero que me resuelvan algunas de mis dudas ya que no son pocas!
BeginTrans y CommitTrans (métodos de una conexión ADO).
Soy Técnico Superior en Desarrollo de Aplicaciones Informáticas y cuando estudiaba el ataque a bases de datos desde VB con ADO esto no se nos explicó bien.
Nos decían que ADO funciona de una manera asíncrona y que cuando haces un movenext o un update éste se queda ejecutándose y pasa el control a la siguiente instrucción en VB.
Es decir, que si hacíamos un movenext y en la siguiente instrucción consultábamos un campo del recordset podría pasar que el valor fuera el del registro anterior (vamos, que no le habría dado tiempo a hacer el movenext).
Para solucionar esto lo que "nos decían" que hiciéramos es que a la propiedad ActiveConnection del control ADO le asignáramos una conexión ADO conectada a la misma BD para luego utilizar los métodos BeginTrans y CommitTrans.
Un ejemplo de esto sería:
...
...
dim conn as new adodb.connection
set ado1.activeconnection=conn
Conn. Begintrans
Ado1.recordset.movenext
conn.committrans
...
...
De esta manera se "solucionaba" el problema de que la tecnología ADO funcionara de manera asíncrona.
¿Es todo esto cierto?
¿Existen métodos de los recordset que funcionan de manera asíncrona? ¿Quizás el update?
¿Cómo debo utilizar los BeginTrans y los CommitTrans? ¿Debería utilizarlos entre métodos de un recordset que funcionen de forma asíncrona (si es que existen) o debería utilizarlos con el sentido más amplio de transacción?
GRACIAS y espero que me resuelvan algunas de mis dudas ya que no son pocas!
2 Respuestas
Respuesta de orande
1
Respuesta de ingariel
1