La diferencia entre conn.execute y rs.open es que el uso de los métodos conn.execute, rs.open y command.execute es muy diferente.
Por lo general, para formar un conjunto de registros, puede usar
Set rs=conn.execute (SQL).
o directamente
rs=CONN.execute(SQL)
y
establecer rs=Server.CreateObject("ADODB.Recordset")
rs.open SQL,CONN,0,1 o rs.open SQL,CONN
En este caso, el rendimiento del open suele ser ligeramente mejor que el anterior.
(El objeto de comando es más flexible y tiene un rango de ejecución más amplio)
Usando CONN.execute, puede ejecutar directamente el siguiente conjunto rs=conn.execute(SQL) sin cerrarlo.
¡¡Pero el rendimiento y la velocidad se reducirán considerablemente!!
¡Es entre 2 y 5 veces más lento! (Yo personalmente probé esto en el bucle msSQL 1000 veces, si no lo cree, pruébelo usted mismo de inmediato), así que antes de ejecutar el siguiente rs=conn.execute, ¡asegúrese de cerrar! ¡Es
una buena idea, hábito!
Cuando se usa rs rs.open de un solo objeto, antes de abrir el siguiente conjunto de registros, la pantalla debe cerrarse; de lo contrario, se producirá un error. La velocidad es básicamente la misma en el caso de SQL, CONN, 0, 1,
así que me gusta. utilizar un CreateObject(" adodb.recordser" (Si no es necesario intercalar varios conjuntos de registros, ¡varios registros no son un problema!)
¡¡¡Entonces úsalo de principio a fin!!!
Abrir y cerrar. Abrir y cerrar. ¡El último conjunto rs=nada llega a su fin!
¡Más importante aún, open proporciona una forma muy flexible de operar muchos atributos de los metadatos de la base de datos!
¡Cuando abres la caja del tesoro, puedes ver todo bajo la luz dorada!
¡Hay muchas situaciones en las que tienes que usar open!
Y conn.execute quiere cambiar la película debajo de la tela negra ~~~ furtivamente ~~ ¡¡¡muy simple!!!
Por ejemplo:
rs1.open SQL1,conn,0,1.
rs.open SQL, conexión, 1,3
si rs(0)<0 entonces rs(0)=0
rs(1)=aaa
rs(2)=bbb
rs.update 'Actualiza el conjunto de registros y escríbelo en la base de datos
rs.addnew 'Agrega un nuevo registro
rs(0)=1
rs(1)=ddd
rs(2)=kkk
rs.actualización
Obtenga
inmediatamente la identificación del número automático del nuevo registro. //Esto se usa muy comúnmente.
identificación rs.
rs1("identificación"=identificación
rs1(1)=...
..
rs1.actualizar
rs1.cerrar: establecer rs1 = nada
rs.close: establecer rs = nada
Si se utiliza CONN.execute para la operación anterior, se utilizarán cuatro CONN.execute
CONN.execute ("actualizar .."
CONN.execute("insertar en la tabla 1:"
rs=CONN.execute("seleccione nueva identificación automática"
CONN.execute("insertar en la tabla 2"
¿Qué método es más lógico y claro a primera vista?
¡También hay una forma interesante de usar Recordset abierto para grabar!
Es un poco confuso cuando lo pienso.
Set rs=server.CreateObject("Adodb.recordset"
Establecer rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,CONN
rs.open SQL2, CONN
configura dos objetos con el mismo nombre al mismo tiempo para abrir dos conjuntos de registros, ¡y están disponibles!
'Siempre y cuando los nombres de las columnas sean consistentes con los metadatos en estos dos conjuntos de registros
'¡¡Entonces el funcionamiento es normal!!
Expandir
Conjunto rs=server.CreateObject("Adodb.recordset"
Establecer rs=server.CreateObject("Adodb.recordset"
Establecer rs=server.CreateObject("Adodb.recordset"
Establecer rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,CONN
rs.openSQL2,CONEXIÓN
rs.abrir SQL3,CONN
rs.open SQL4, CONN,
que es más grande que dos rs con el mismo nombre! ¡
Se siente un poco como una consulta conjunta con SQL y luego abre el conjunto de registros ~~~!
¡¡Lo he usado así antes!! ¡¡No debería ser deslumbrante!!
===============
¿Cuándo usar qué?
Esto se basa simplemente en mi experiencia personal:
Si solo necesita tocar la base de datos una vez, use ejecutar
Si desea realizar operaciones complejas en la base de datos, lo mejor es utilizar rs.open