IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)


Mis à jour le 18/12/2002

Par Sébastien Curutchet

Un tour rapide d'ADO Sommaire Objet Recordset

Droit de diffusion et d'utilisation:
Tous les documents ou partie de document ainsi que le code sont libres d'accès, mais ne peuvent pas être diffusés sur d'autres sites HTTP, FTP ou autres, sans mon accord.
L'ensemble de mon code mis à votre diposition est libre d'utilisation tant qu'il ne sert pas à la réalisation d'applications payantes. Je demande juste aux personnes incluant mon code dans leurs applications d'y laisser le commentaire mis en entête.



2. Etablir une connexion avec ADO et l'objet Connection:

Pour établir une connexion à une base de données avec ADO, on utilise l'objet Connection. Vous trouverez dans ce chapitre un exemple de connexion à une base de données Access, Oracle et SQL Server.

Une connexion à une base de données se définit par :

  • l'hôte sur lequel se trouve la base de données
  • le nom de la base de données
  • le nom de l'utilisateur
  • le mot de passe

L'ensemble de ces champs est appelé chaîne de connexion. Les champs "hôte" et "nom de la base de données" peuvent soit être définis dans le programme soit dans un DSN (Data Source Name). Un DSN se configure dans le panneau de configuration avec l'outil Source de données (ODBC).

Comment réaliser une connexion ? Tout d'abord il faut déclarer la variable associée à la connexion.

Dim cnx As New ADODB.Connection

ou alors

Dim cnx As ADODB.Connection
Set cnx = New ADODB.Connection

L'étape suivante consiste à écrire la chaîne de connexion. Comme il a été vu précédemment, il existe deux possibilités soit en utilisant un DSN soit en mettant les informations nécessaires dans la chaîne de connexion.

2.1 Connexion à une base de données Access sans DSN:

'Déclaration de la variable de connexion
Dim cnx As ADODB.Connection
Set cnx = New ADODB.Connection

'Définition du pilote de connexion
cnx.Provider = "Microsoft.Jet.Oledb.3.51"
'Définition de la chaîne de connexion
cnx.ConnectionString = "C:\maBase.mdb"
'Ouverture de la base de données
cnx.Open

Le piote 3.51 permet d'accéder à Acces 95 et 97. Pour Access 2000, il faut utiliser la version 4.0.

2.2 Connexion à une base de données SQL Server sans DSN:

'Déclaration de la variable de connexion
Dim cnx As ADODB.Connection
Set cnx = New ADODB.Connection
...

'Définition de la chaîne de connexion
cnx.ConnectionString = "UID=" & NomUtilisateur &";PWD=" & MotDePasse & ";" & "DRIVER={SQL Server};Server=" & NomServeur & ";Database=" & NomBaseDeDonnées & ";"

'Ouverture de la base de données
cnx.Open

Comme vous avez pû le constater, il n'y a pas la ligne cnx.Provider. En effet dans cet exemple le pilote à utiliser est décrit dans la chaîne de connexion : DRIVER={SQL Server}.

2.3 Connexion à une base de données Oracle sans DSN:

'Déclaration de la variable de connexion
Dim cnx As ADODB.Connection
Set cnx = New ADODB.Connection
...

'Définition de la chaîne de connexion
cnx.ConnectionString = "UID=" + NomUtilisateur & ";PWD=" & MotDePasse & ";" & "DRIVER=msdaora;Server=" & NomServeur & ";Database=" & NomBaseDeDonnées & ";"

'Ouverture de la base de données
cnx.Open


Vous avez pû voir des chaînes de connexion avec comme DRIVER {Microsoft ODBC for Oracle}. Ceci marche mais n'est pas très recommandé.

2.4 Connexion à une base de données avec un DSN:

'Déclaration de la variable de connexion
Dim cnx As ADODB.Connection
Set cnx = New ADODB.Connection
...

'Définition de la chaîne de connexion
cnx.ConnectionString = "DSN=" & NomDuDSN & ";UID=" & NomUtilisateur & ";PWD=" & MotDePasse & ";"

'Ouverture de la base de données
cnx.Open


Dans le cas où il y a le DSN, vous n'avez plus besoin de spécifier l'hôte sur lequel se trouve la base de données ainsi que le nom de la base de données.


Pour finir cette partie, voici une petite fonction de connexion avec DSN.

'===================================================================
' AUTHOR : DrQ
' FUNCTION : InitConnection(...)
' DESCRIPTION : Initiliase la connexion à la base de données
' PARAMS : * DSN : Nom du DSN associé à la connexion
' * UserName : Nom de l'utilisateur
' * Password : Mot de passe de l'utilisateur
' VERSION : 1.1
'===================================================================

Public Function InitConnection(DSN As String, UserName As String, PassWord As String) As Boolean
  Dim query As String
  Dim cnxString As String
  Dim RequeteOk As Boolean
  Dim mRst As New ADODB.Recordset

  InitConnection = False
  'Initialisation de la chaine de connexion
  ADOCnx.ConnectionString = "DSN=" & DSN & ";"

  'Vérifie que la connexion est bien fermée
  If ADOCnx.State = adStateOpen Then
    ADOCnx.Close
  End If
  On Error GoTo BadConnection
  'Connexion à la base de données
  ADOCnx.Open cnxString, UserName, PassWord, adAsyncConnect
  'Attente que la connexion soit établie
  While (ADOCnx.State = adStateConnecting)
    DoEvents
   Wend

  'Vérification des erreurs dans le cas d'une mauvaise connexion
  If ADOCnx.Errors.Count > 0 Then
    'Affichage des erreurs
    MsgBox ADOCnx.Errors.Item(0)
    InitConnection = False
    Exit Function
  Else
    InitConnection = True
   End If
   Exit Function


BadConnection:
If ADOCnx.Errors.Count > 0 Then
    'Affichage des erreurs
    MsgBox ADOCnx.Errors.Item(0)
    InitConnection = False
    Exit Function
Else
    MsgBox
err.Description
End If
End Function

2.5 Quelques informations supplémentaires sur les pilotes:

Liste des pilotes ODBC sans DSN

dBase

Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=chemin\nombd.dbf;

MS Access

Driver={Microsoft Access Driver (*.mdb)};Dbq=chemin\nombd.mdb;Uid=NomUtilisateur;Pwd=MotDePasse;

MS SQL Server

Driver={SQL Server};Server=NomDuServeur;Database=nombd;Uid=NomUtilisateur;Pwd=MotDePasse;

MS Text Drive

Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=chemin\;Extensions=asc,csv,tab,txt;Persist Security Info=False;

MySQL

Driver={mysql}; database=nombd;server=NomDuServeur;uid=NomUtilisateur;pwd=MotDePasse;option=16386;

Oracle

Driver={Microsoft ODBC for Oracle};Server=ServeurOracle.schema;Uid=NomUtilisateur;Pwd=MotDePasse;

Visual Foxpro

Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=chemin\nombd.dbc;Exclusive=No;

Liste des pilotes OLEDB


MS Access

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=chemin\nombd.mdb;User Id=NomUtilisateur;Password=MotDePasse;

MS SQL Server

Provider=SQLOLEDB;Data Source=NomServeur;Initial Catalog=nombd;User ID=NomUtilisateur;Password=MotDePasse;

MS SQL Server avec une adresse IP

Provider=SQLOLEDB; Data Source=xx.xx.xx.xx,1433; Network Library=DBMSSOCN; Initial Catalog=dbname;User ID=NomUtilisateur;Password=MotDePasse;

MS Text Driver

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=chemin;Extended Properties='text;FMT=Delimited'"

Oracle

Provider=OraOLEDB.Oracle;Data Source=nombd;User Id=NomUtilisateur;Password=MotDePasse;

Un tour rapide d'ADO Sommaire Objet Recordset

Documents réalisés par Sébastien Curutchet