Trucsweb.com

Trucsweb.com

ASP

ActiveX® Data Objects (ADO)

RDFFav

Fermer et vider la connexion de la base de données

Ne jamais oublier de fermer la connexion et le jeu d’enregistrement (recordset) d’une base de données.close Nothing fermer base vider mémoire adoFermer et vider la connexion de la base de données

  • · Niveau : INTERMÉDIAIRE
  • · Compatibilité : Windows NT/2000 IIS3

Il est impératif de ne jamais oublier de fermer la connexion et le jeu d’enregistrement (recordset) d’une base de données. L’accumulation peut surcharger la mémoire pour rien.

oRs.close
set oRs = nothing
oConn.close
set oConn = nothing
Objet ADO
' Création de l’objet ADO
Set oConn = Server.CreateObject("ADODB.Recordset")
' Ouverture de la connexion
oConn.Open "[chaine de connexion]"
  [code]
' Fermer l’objet
oConn.Close
' Et vider l’allocation « oConn » de la mémoire
Set oConn = Nothing
Avec un « recordset » :
Dim oConn, oRS, sSQL
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "[chaine de connexion]"
  ' Création de l’objet RecordSet
  Set oRS = Server.CreateObject("ADODB.RecordSet")
  ' Ouverture du RecordSet
  sSQL = [...]
  oRS.Open sSQL,oConn
    [...traitement]
  ' Fermer l’objet « oRS »
  oRS.close
  ' Vider l’allocation « oRS » de la mémoire
  set oRS = nothing
oConn.close
set oConn = nothing

Notez que vous pouvez ouvrir une seule connexion au début du script et la fermer seulement a la fin du traitement. En utilisant plusieurs jeux d’enregistrement (recordset). Mais cette pratique n’est pas conseillée, d’abord par les tests au siècle dernier de feu « learnasp.com » et ensuite selon les nouvelles directives mêmes de Microsoft. Même si vous devez rouvrir 20 fois la même connexion dans une même page. Ce sera toujours plus optimisé qu’une seule connexion gourmande. Personnellement j’ouvre le plus tard possible et je ferme le plus tôt possible à moins d’avoir deux requêtes plus ou moins simples de suites. Par exemple deux compteurs (count(*)) ou deux « delete » de suite :

''''' Exemple déconseillé par Microsoft.

dim oConn, oRs
' Ouverture de la connexion
set oConn=Server.CreateObject("ADODB.Connection")
oConn.open  "[chaine de connexion]"

' Premier jeu d'enregistrement
set oRs = Server.CreateObject("ADODB.recordset")
oRs.Open "[sql1]",oConn
[traitement 1]
' Fermer le premier jeu d'enregistrement (optionnel)
oRs.Close

' Deuxième jeu d'enregistrement
set oRs = Server.CreateObject("ADODB.recordset")
oRs.Open "[sql2]",oConn
[traitement 2]

oRs.Close
Set oRs = Nothing
oConn.Close
Set oConn = Nothing

À ne pas faire
  • À la limite on peut stocker la chaine de connexion dans une variable session, mais il faut à tout prix éviter de créer une connexion dans une variable session! En plus de « by passer » la connexion MTX (Microsoft Transaction Server) et le pool, si l’objet n’est pas fermé convenablement, on garde inutilement la connexion et l’allocation en mémoire le temps de la session, c’est-à-dire 20 minutes.

  • Ne jamais passer de paramètres à l’objet « Command » dans l’instruction d’exécution.

  • Toujours initialiser l’objet avec la méthode « Server.CreateObject ». Le serveur indiquera au MTS de créer l’objet dans un paquet de transactions de sorte que les ressources sont mises en commun (pooled).

  • Ne jamais réutiliser un jeu d’enregistrement (recordset) ou une variable « Command ». Il faut toujours créer une nouvelle instance. Pour plus d’information lire Microsoft - PRB: Problems Reusing ADO Command Object on Multiple Recordsets.

Django (Oznog) Blais
Dernière mise à jour :

Commentaires

Ajouter un commentaire
Votre adresse de courriel ne sera pas publiée. * L'astérisque indique les champs obligatoires.
Votre évaluation du tutoriel

8/10 sur 1 revues.
       Visites : 7506 - Pages vues : 89288
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@