Aucun titre de diapositive
Transcription
Aucun titre de diapositive
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