interface odbc

publicité
MASTER ASE
SYSTEMES D ’INFORMATION POUR L ’INDUSTRIE
INTERFACE
Supervision / Bases de Données
ODBC/ADO
Pierre BONNET
2008-2009
Pierre BONNET - Supervision - Liaison ODBC
1
L ’INTERFACE ODBC
 Open DataBase Connectivity (ODBC) est une API (Application
Programming Interface) normalisée, indépendante du langage et du
système d'exploitation
 Permet aux applications d'accéder aux données de nombreux systèmes
de gestion des de bases de données.
 ODBC offre aux applications un langage commun pour qu’elles puissent
communiquer entre elles.
 Toutes les applications qui supportent ODBC reconnaissent un ensemble
commun de commandes SQL (Structured Query Language).
Pierre BONNET - Supervision - Liaison ODBC
2
L ’INTERFACE ODBC
 L ’architecture ODBC est du type client/serveur
Le client envoie les requêtes à travers l ’API ODBC fourni par l'éditeur de la source
de données.
 Le gestionnaire de pilotes ODBC détermine la source de données utilisée ainsi que le
pilote ODBC (driver ) pouvant communiquer avec cette source particulière
 Les données résultant de la requête sont renvoyées via le pilote ODBC à l'application
cliente.
(Sous Windows, les informations du gestionnaire sont sauvegardées dans ODBC.ini et ODBCINST.ini )
Pierre BONNET - Supervision - Liaison ODBC
3
L ’INTERFACE ODBC
 La source de données peut être locale (sur la même machine que le client
ou distante (sur une autre machine)
 Elle peut être aussi bien :
• une base de données SQL
• une base de données
autre
• un fichier Excel
• un fichier quelconque
 Le gestionnaire de source de données peut attribuer un nom à la source
DSN (Data Source Name) . Ce nom sera utilisé par le client pour la
connexion à la base.
Pierre BONNET - Supervision - Liaison ODBC
4
L ’INTERFACE ODBC
 Le couplage source de données - driver est géré par le module d'administration de sources
de données ODBC ( "Panneau de configuration" --> "Outils d'Administration")
DSN
Choix du driver
Choix ou création de la base
Pierre BONNET - Supervision - Liaison ODBC
5
Les Principales Méthodes ODBC
• Documentation :
Microsoft ODBC Programmer's Reference sur MSDN
• odbc_connect ($base,$login,$password) : ouvre une connexion avec la base de données $base
via le pilote ODBC et retourne un identifiant de connexion cliente -$id- .
• odbc_exec ($id, $requete) : prépare et exécute une requête SQL
Retourne un identifiant de résultat.
• odbc_getresult ($id_resultat, $champ) : retourne la valeur d'un champ désigné par son nom ou sa
position.
• odbc_num_fields ($id_resultat) : retourne le nombre de champs dans un résultat.
• odbc_fetch_row($id_resultat [, $num_enregistrement]) : lit un enregistrement spécifié.
• odbc_close ($id) : ferme la connexion dont l’identifiant est $id
Pierre BONNET - Supervision - Liaison ODBC
6
DAO
• Microsoft propose une bibliothèque d'objets et de méthodes avec Data Access Objects. Elle
facilite l'accès à la base et fournit des outils pour manipuler les données du côté applicatif.
L'usage d'un driver ODBC reste indispensable pour l'accès à la base.
• les deux principaux outils sont :
- l'accès à la base de données par requête SQL
- l'objet RecordSet pour manipuler les données
Pierre BONNET - Supervision - Liaison ODBC
7
DAO
• Structure du modèle:
D'après http://warin.developpez.com/access/dao/
Pierre BONNET - Supervision - Liaison ODBC
8
DAO
• Exemple
Option Explicit
Private Sub Lecture
Dim Ma_Base As DAO.Database
Dim Mon_Enreg As DAO.Recordset
Dim Ligne As Long
'Ouverture de la base de données
Set Ma_Base = OpenDatabase("c:\super.mdb", False, False, "MS Access;PWD=Pierre")
'Ouverture des enregistrements de la table "Table_Alm"
Set Mon_Enreg = Ma_Base.OpenRecordset("SELECT date_alm, heure_alm, ...
nom_alm FROM Table_Alm ORDER BY date_alm ASC")
'Pointage du premier enregistrement de la table
Mon_Enreg.MoveFirst
'Ecriture dans la feuille Excel
Do While Mon_Enreg.EOF = False
Cells(Ligne, 1) = Mon_Enreg!date_alm
Cells(Ligne, 2) = Mon_Enreg!heure_alm
Cells(Ligne, 3) = Mon_Enreg!nom_alm
Loop
'Enregistrement suivant
Ligne = Ligne + 1
Mon_Enreg.MoveNext
Mon_Enreg.Close
Ma_Base.Close
End Sub
Pierre BONNET - Supervision - Liaison ODBC
9
De ODBC à ADO
• Microsoft a fait évoluer le concept ODBC/DAO vers une solution plus large : ADO
ADO (ActiveX Data Object) offre une plus grande simplicité de programmation grâce à
un ensemble d'objets prédéfinis.
OLE : Object Linking and Embedding
AD0 : ActiveX Data Object
Pierre BONNET - Supervision - Liaison ODBC
10
La Connexion ADO
• ADO simplifie l ’usage de ODBC pour accéder aux bases de données sans se soucier
de l ’allocation des environnements de travail (VB6, .NET , ...)
• ADO fournit des objets qui permettent de se connecter à une base et de réaliser
des requêtes SQL sur cette base.
• ADO (ActiveX Data Object) est un composant ActiveX et utilise la technologie OLE
DB
ADO existe aussi pour divers langages ou systèmes d ’exploitation (Unix...)
• Les applications construites avec l ’API ADO sont
plus performantes que sous
ODBC
Pierre BONNET - Supervision - Liaison ODBC
11
La Connexion ADO
• ADO propose les objets suivants :
Pierre BONNET - Supervision - Liaison ODBC
12
La Connexion ADO
• Les 7 objets ADO sont :
* Connection : connexion à une source de données (fichier texte, fichier Excel, ou
base de données)
Error : ensemble des erreurs retournées par le SGBD
* Command : permet d'exécuter des requêtes SQL
Parameter : paramètres d'une requête
* Recordset : jeu d'enregistrements retournés lors de l'exécution d'un SELECT
Field : champ d ’un enregistrement (colonne d ’un RecordSet)
* Property : objet des paramètres d ’un objet (peut être défini dynamiquement par
le serveur)
Pierre BONNET - Supervision - Liaison ODBC
13
La Connexion ADO
• Une connexion ADO à 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 peuvent être définis :
• dans le programme directement. La chaîne de connexion comprend
tous les éléments.
• dans le DSN (Data Source Name), en utilisant l'outil Source
de données (ODBC) du panneau de configuration. La connexion
fait alors appel seulement au nom déclaré dans la source de donnée.
Pierre BONNET - Supervision - Liaison ODBC
14
La Connexion ADO
• Connexion ADO avec DSN
[avec une base quelconque]
'Déclaration de la variable de connexion
Dim Ma_Cnx As ADODB.Connection
Set Ma_Cnx = New ADODB.Connection
...
'Définition de la chaîne de connexion
Ma_Cnx.ConnectionString = "DSN=" & Nom_DSN
& ";UID=" & Nom_Utilisateur & ";PWD=" & Mot_Passe & ";"
'Ouverture de la base de données
Ma_Cnx.Open
Pour utiliser ADO dans un projet Visual Basic, rajouter dans le menu Projets - Références, Microsoft ActiveX Data Objects
2.x Library.
Pierre BONNET - Supervision - Liaison ODBC
15
La Connexion ADO
• Connexion ADO sans DSN [avec une base Access]:
Dim ma_cnx As New ADODB.Connection
'Définition du pilote de connexion
ma_cnx.Provider = "Microsoft.Jet.OLEDB.4.0 "
'Définition de la chaîne de connexion
ma_cnx.ConnectionString = "C:\maBase.mdb "
'Ouverture de la base de données
ma_cnx.Open
....
Pierre BONNET - Supervision - Liaison ODBC
16
La Connexion ADO
• Requête SQL sur la base :
Dim...
Dim Mon_Record As New ADODB.RecordSet
'Ouverture de la base de données
Ma_Cnx.ConnectionString....
......
Ma_Cnx.Open
’Requête
if Ma_Cnx.State = 1 then
‘ Lecture et copie dans un RecordSet
Set Mon_Record = Ma_Cnx.Execute("SELECT * FROM Ma_Table")
‘ Ecriture d ’un nouvel enregistrement
Set Mon_Record = Ma_Cnx.Execute("INSERT INTO table1 (champ1)
VALUES...
...(valeur_champ1) " )
end if
’Fermeture
Ma_Cnx.Close
Set Ma_Cnx = nothing
Pierre BONNET - Supervision - Liaison ODBC
17
La Connexion ADO
• Exemple : Connexion
ADO sans DSN avec une base Access
Dim Ma_Cnx As New ADODB.Connection
Dim Mon_Record As ADODB.Recordset
Dim Cmd As New ADODB.Command
’Définition du pilote de connexion et de la source
Ma_Cnx.ConnectionString = " Provider=Microsoft.Jet.OLEDB.4.0;...
...Data Source = C:\Ma_base_Access.mdb "
’Ouverture
Ma_Cnx.Open
’Requête
if Ma_Cnx.State = 1 then
Cmd.ActiveConnection = Ma_Cnx
Cmd.CommandText = "SELECT * FROM MaTable"
Cmd.CommandType = adCmdText
Set Mon_Record = Cmd.Execute
end if
‘ Fermeture
Pierre BONNET - Supervision - Liaison ODBC
18
La Connexion ADO
• Exemple : Connexion
ADO sans DSN avec base SQL
'Déclaration de la variable de connexion
Dim Ma_Cnx As New ADODB.Connection
'Définition de la chaîne de connexion
Ma_Cnx.ConnectionString = "provider=SQLOLEDB.1; ...
DataSource=CheminMonServeur; ...
Initial Catalog=MaBaseDeDonnées;...
User ID=nomDusager;Password=motDePasse;"
'Ouverture de la base de données
Ma_Cnx.Open
http://drq.developpez.com/vb/tutoriels/ADO
Pierre BONNET - Supervision - Liaison ODBC
19
Téléchargement