- · Niveau : INTERMÉDIAIRE
- · Compatibilité : Windows NT/2000 IIS3
Vos recherches d’optimisation et de rapidité vous feront découvrir à quel point la grande famille des objets ADO (ActiveX Data Objects) pour manipuler des bases de données est loin d’être simple. Dans ce tutoriel je vais m’éfforcer de vulgariser et de résumer les grandes lignes de la connexion via ADO tout en vous suggérant les méthodes les plus efficaces.
Il s’agit en fait de se connecter à un serveur ou "provider" de base de donnée en lui indiquant le chemin d’accès d’une base, un nom d’usager et son mot de passe, pour qu’il ouvre la base. Rien de plus... Ce qui complique la tâche c’est les techniques possibles, technique redondante, résidante en mémoire, empilée dans les registres, désuette etc. Elles ont toute en commun de se connecter à une base de données, ce qui les diffères en bout de ligne c’est la rapidité et l’efficacité. Mais le principe est toujours de céer son objet ADO, de le traiter et de le détruire.
<%
Dim objConnexion
’ Créer l’objet ADO
Set objConnexion = Server.CreateObject("ADODB.Connection")
’ Ouvrir la connexion avec ou sans DSN et traitement...
’ Détruire l’objet
set objConnexion=nothing
%>
DSN ou Sans DSN
Les informations sur la base doivent être transmises à l’objet ADO à l’aide d’une de ses 3 méthodes. L’enjeu, la simplicité !! Hé oui, l’utilisation d’un service DSN (Data Source Name) permet peut-être de simplifier les connexions mais entraîne inévitablement un traitement de plus a chaque connexion. Je n’entrerais pas dans le débat qui suscite beaucoup d’intérêt.
SYSTEM DSN (Data Source Name) - Déconseillé
Très répandu, il permet une connexion en utilisant un "nom virtuel" défini sur le serveur. Il s’agit en fait d’un "pont" vers le serveur de base de données (Provider) que vous devez déclarer sur le serveur. Plus simple à configurer, à programmer mais c’est tout de même un "pont" de plus qui nécessite un accès au registre... Si vous n’avez pas le choix ou si vous débutez, c’est la solution idéale.
<%
Dim objConnexion
’ Créer l’objet ADO
Set objConnexion = Server.CreateObject("ADODB.Connection")
’ Ouvrir la base avec DSN
’ "BaseVirtuelle" doit être défini sur le serveur via "ODBC 32 bits"
objConnexion.open "BaseVirtuelle"
’ Traitement...
’ Fermer la connexion
objConnexion.close
’ Détruire l’objet
set objConnexion=nothing
%>
J’aime bien mettre ma chaîne de connexion dans une variable. Dans l’exemple suivant, j’ai ajouté un nom d’usager et un mot de passe.
strConn="chaineConn = BaseVirtuelle;uid=usager;pwd=motpasse"
Conn.open strConn
NOTE: Pour déclarer votre base de données sur le serveur, aller dans le Panneau de configuration > ODBC 32 bits, ou Control Panel > ODBC Data Sources 32 bits (Pour Win2000 Control Panel > Administrative Tools > Data Sources (ODBC)), puis cliquez sur l’onglet DSN système (System DSN). Cliquez ensuite sur le bouton ajouter (add), puis sur Microsoft Access Driver (*.mdb), puis Terminer (finish). Entrer dans "Nom de la source de Données" (Data source name) le nom de votre base virtuelle, puis avec le bouton sélectionner (Select...), localisez votre base sur le disque dur.
Fichier DSN - Déconseillé
C’est tout simplement un fichier ASCII qui contient les informations du DSN. Ce n’est vraiment pas recommandé pour un site largement fréquenté. De plus il faut à chaque connexion, ouvrir, lire et fermer un fichier ASCII. La déclaration se fait aussi par le Panneau de configuration > ODBC 32 bits...
<%
Dim objConnexion
’ Créer l’objet ADO
Set objConnexion = Server.CreateObject("ADODB.Connection")
’ Ouvrir la base avec DSN
’ Le fichier "base.dsn" doit être créé sur le serveur via "ODBC 32 bits"
objConnexion.open "FILEDSN=D:\cheminDaccès\base.dsn; Uid=Admin;Pwd=motDePasse;"
’ Traitement...
’ Fermer la connexion
objConnexion.close
’ Détruire l’objet
set objConnexion=nothing
%>
DSN-Less (Sans DSN) - Conseillé
C’est la meilleure solution mais qui demande une bonne connaissance des chaînes de connexion puisque vous n’avez pas à déclarer la base de données dans le DSN du serveur. C’est dire que vous devez envoyer vous-même ce que le DSN envoie. Sachez que chaque base à son propre "Driver ODBC" ou "Provider OLE DB" donc sa propre chaîne de connexion. Noter qu’une base de données qui utilise ce type de connexion devrait toujours être déposée sur le serveur SOUS la racine Web pour éviter d’être disponible en téléchargement.
<%
Dim objConnexion, chaineConn
’ Créer l’objet ADO
Set objConnexion = Server.CreateObject("ADODB.Connection")
’ Ouvrir la base sans DSN avec chaîne de connexion
chaineConn = "provider=MICROSOFT.JET.OLEDB.4.0; DataSource=D:\inetpub\db\base.mdb;User ID=??;Password=??;"
objConnexion.open chaineConn
’ Traitement...
’ Fermer la connexion et détruire l’objet
objConnexion.close
set objConnexion=nothing
%>
Puisque c’est la méthode conseillée, je vous invite à poursuivre avec la lecture de:
"Chaînes de connexion ODBC et OLE DB"
Note sur DAO et RDO
DAO (Data Access Objects) et RDO (Remote Data Objects) sont de vielles techniques utilisées à la manière de ADO pour se connecter sur une base de données via ODBC (Open DataBase Connectivity). Elles ne sont plus utilisées alors pas la peine d’en savoir plus. Sachez seulement qu’elles peuvent avoir cours encore aujourd’hui notamment dans certains tutoriels. ODBC est lui aussi menacé de disparaître, La dernière technologie est donc OLE DB. Noter en terminant que bien qu’ADO soit utilisé pour communiquer avec OLE DB vous pourriez directement communiquer avec OLE DB sans passer par ADO, ce qui demande bien sûr une plus grande connaissance des OLE DB de chaque base de données...