La différence entre conn.execute et rs.open est que l'utilisation des méthodes conn.execute, rs.open et command.execute est très différente.
Habituellement, pour former un jeu d'enregistrements, vous pouvez utiliser
Set rs=conn.execute (SQL).
ou directement
rs=CONN.execute(SQL)
et
Set rs=Server.CreateObject("ADODB.Recordset")
rs.open SQL,CONN,0,1 ou rs.open SQL,CONN
Dans ce cas, les performances d’open sont généralement légèrement meilleures que les précédentes.
(L'objet de commande est plus flexible et a une plage d'exécution plus large)
En utilisant CONN.execute, vous pouvez exécuter directement l'ensemble suivant rs=conn.execute(SQL) sans le fermer.
Mais les performances et la vitesse seront considérablement réduites !!
C'est environ 2 à 5 fois plus lent !! (j'ai personnellement testé cela dans la boucle msSQL 1000 fois, si vous n'y croyez pas, testez-le vous-même immédiatement), donc avant d'exécuter le prochain rs=conn.execute !! ça! C'est
une bonne idée Habitude!
Lorsque vous utilisez rs rs.open d'un seul objet, avant d'ouvrir le jeu d'enregistrements suivant, l'affichage doit être fermé, sinon une erreur se produira dans le cas de SQL, CONN, 0, 1,
donc j'aime bien
.utiliser un CreateObject(" adodb.recordser" (S'il n'est pas nécessaire d'entrelacer plusieurs jeux d'enregistrements, plusieurs enregistrements ne posent pas de problème !)
Alors utilisez-le du début à la fin !!!
Ouvrir et fermer. Ouvrir et fermer. Le dernier ensemble rs=nothing n'a pas de fin !
Plus important encore, open fournit un moyen très flexible d'exploiter de nombreux attributs des métadonnées de la base de données !
Lorsque vous ouvrez le coffre au trésor, vous pouvez tout voir dans la lumière dorée !
Il existe de nombreuses situations dans lesquelles vous devez utiliser open!
Et conn.execute veut changer le film sous le tissu noir~~~sneak~~très simple !!!
Par exemple :
rs1.open SQL1,conn,0,1
!!!
rs.open SQL, conn, 1,3
si rs(0)<0 alors rs(0)=0
rs(1)=aaa
rs(2)=bbb
rs.update 'Mettre à jour le jeu d'enregistrements et l'écrire dans la base de données
rs.addnew 'Ajouter un nouvel enregistrement
rs(0)=1
rs(1)=jdd
rs(2)=kkk
rs.mise à jour
id=rs(3) rs(s) 'Le champ pris est le numéro automatique. Obtenez immédiatement l'identifiant du numéro automatique du nouvel enregistrement // Ceci est très couramment utilisé.
rs1.addnew ajoute un nouvel enregistrement lié à rs1 en utilisant le
.identifiant rs.
rs1("identifiant"=identifiant
rs1(1)=...
..
rs1.update
rs1.close:set rs1=rien
rs.close:set rs=rien
Si CONN.execute est utilisé pour l'opération ci-dessus, quatre CONN.executes seront utilisés
CONN.execute("update .."
CONN.execute("insérer dans le tableau 1 :"
rs=CONN.execute("sélectionner un nouvel identifiant automatique"
CONN.execute("insérer dans la table 2"
Quelle méthode est la plus logique et la plus claire en un coup d’œil ?
Il existe également une manière intéressante d'utiliser Recordset ouvert pour enregistrer !!
C'est un peu déroutant quand j'y pense.
Set rs=server.CreateObject("Adodb.recordset"
Définir rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,CONN
rs.open SQL2, CONN
définit deux objets du même nom en même temps pour ouvrir deux jeux d'enregistrements, et ils sont disponibles !
'Tant que les noms de colonnes sont cohérents avec les métadonnées de ces deux jeux d'enregistrements
'Alors le fonctionnement est normal !!
Développez
l'ensemble rs=server.CreateObject("Adodb.recordset"
Définir rs=server.CreateObject("Adodb.recordset"
Définir rs=server.CreateObject("Adodb.recordset"
Définir rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,CONN
rs.openSQL2,CONN
rs.open SQL3,CONN
rs.open SQL4, CONN,
qui est plus grand que deux rs du même nom !!
Cela ressemble un peu à une requête conjointe avec SQL, puis ouvrez le jeu d'enregistrements ~~~
Je l'ai déjà utilisé comme ça !! Ça ne devrait pas être éblouissant !!
===============
Quand utiliser quoi ?
C'est juste basé sur mon expérience personnelle :
Si vous n'avez besoin de toucher la base de données qu'une seule fois, utilisez exécuter
Si vous souhaitez effectuer des opérations complexes sur la base de données, il est préférable d'utiliser rs.open