Choix d'une source de données ou d'un pilote

La source de données ou le pilote utilisé par une application est parfois codé en dur dans l'application. Par exemple, une application personnalisée écrite par une section MIS pour transférer des données d'une source de données à une autre contiendrait les noms de ces sources de données. Cette application ne fonctionnerait tout simplement pas avec d'autres sources de données. Citons également l'exemple d'une application de secteur vertical, telle que celle utilisée pour la saisie de commande. Une telle application utilise toujours la même source de données, qui a un schéma prédéfini connu par l'application.

D'autres applications sélectionnent la source de données ou le pilote à l'exécution. En règle générale, il s'agit d'applications génériques qui effectuent des requêtes ad hoc, telles qu'un tableur qui utilise ODBC pour importer des données. Ces applications dressent généralement la liste des sources de données ou des pilotes disponibles et permettent aux utilisateurs de choisir ceux qui leur conviennent. La fréquence à laquelle une application générique répertorie les sources de données, les pilotes ou les deux dépend du fait que l'application utilise des pilotes basés sur un SGBD ou sur des fichiers.

Les pilotes SGBD nécessitent généralement un ensemble complexe d'informations de connexion, telles que l'adresse réseau, le protocole réseau, le nom de la base de données, etc. L'objectif d'une source de données est de masquer toutes ces informations. Par conséquent, le paradigme de la source de données s'adapte à l'utilisation de pilotes basés sur des SGBD. Une application peut afficher une liste de sources de données pour l'utilisateur de deux manières. Elle peut appeler SQLDriverConnect avec le mot-clé DSN (Data Source Name) sans valeur associée. Dans ce cas, le gestionnaire de pilotes affichera une liste de noms de sources de données. Si l'application souhaite contrôler la présentation de la liste, elle appelle SQLDataSources pour récupérer une liste des sources de données disponibles et construit sa propre zone de dialogue. Cette fonction est mise en œuvre par le gestionnaire de pilotes et peut être appelée avant le chargement de tout pilote. L'application appelle ensuite une fonction de connexion et la transfert au nom de la source de données choisie.

Si aucune source de données n'est spécifiée, la source de données par défaut définie dans les informations système est utilisée. (Pour plus d'informations, consultez Sous-clé par défaut.) Lorsque SQLConnect est appelé en utilisant un argument ServerName introuvable, un pointeur null ou "DEFAULT", le gestionnaire de pilotes se connecte à la source de données par défaut. La source de données par défaut est également utilisée si la chaîne de connexion utilisée en communication avec SQLDriverConnect ou SQLBrowseConnect contient le mot-clé nom de source de données défini sur « DEFAULT » ou si la source de données spécifiée est introuvable. En outre, la source de données par défaut est utilisée si la chaîne de connexion employée en communication avec SQLDriverConnect ne contient pas le mot-clé nom de source de données.

Avec les pilotes basés sur des fichiers, il est possible d'utiliser un paradigme de fichier. Pour les données stockées sur l'ordinateur local, les utilisateurs sont fréquemment conscients du fait que leurs données se trouvent dans un fichier particulier, tel que Employee.dbf. Plutôt que de sélectionner une source de données inconnue, il est plus facile pour ces utilisateurs de sélectionner le fichier qu'ils connaissent. Pour ce faire, l'application appelle préalablement SQLDrivers. Cette fonction est mise en œuvre par le gestionnaire de pilotes et peut être appelée avant le chargement de tout pilote. SQLDrivers renvoie une liste des pilotes disponibles, ainsi que les valeurs des mots-clés FileUsage et FileExtns. Le mot-clé FileUsage permet de déterminer si les pilotes basés sur les fichiers traitent les fichiers comme des tables, à l'instar de Xbase. Ou plutôt comme des bases de données, à l'instar de Microsoft Access. Le mot-clé FileExtns énumère les extensions de nom de fichier reconnues par le pilote, par exemple .dbf pour un pilote Xbase. À l'aide de ces informations, l'application construit une zone de dialogue dans laquelle l'utilisateur choisit un fichier. En fonction de l'extension du fichier choisi, l'application se connecte ensuite au pilote en appelant SQLDriverConnect avec le mot-clé DRIVER.

Rien n'empêche une application d'utiliser une source de données avec un pilote basé sur un fichier. De même, il est possible d'appeler SQLDriverConnect avec le mot-clé DRIVER pour se connecter à un pilote basé sur un SGBD. Vous trouverez ci-dessous plusieurs utilisations courantes du mot-clé DRIVER pour les pilotes basés sur les SGBD :

  • Absence de création de sources de données. Par exemple, une application personnalisée peut utiliser un pilote et une base de données particuliers. Si le nom du pilote et toutes les informations requises pour se connecter à la base de données sont codés en dur dans l'application, les utilisateurs n'ont pas besoin de créer une source de données sur leur ordinateur pour exécuter l'application. Il suffit d'installer l'application et le pilote.

    L'inconvénient de cette méthode est que l'application doit être recompilée et redistribuée lorsque les informations de connexion sont modifiées. Lorsque le nom de source de données est codé en dur dans l'application à la place des informations de connexion complètes, chaque utilisateur ne doit modifier que les informations contenues dans la source de données.

  • Accès unique à un SGBD particulier. Un tableur qui récupère des données en appelant des fonctions ODBC peut, par exemple, contenir le mot-clé DRIVER pour identifier un pilote particulier. Étant donné que le nom du pilote est significatif pour tous les utilisateurs ayant ce pilote, le tableur peut être transmis entre ces utilisateurs. Si le tableur contenait un nom de source de données, chaque utilisateur doit créer la même source de données pour l'utiliser.

  • Navigation dans le système pour toutes les bases de données accessibles à un pilote particulier. Pour plus d'informations, consultez Connexion avec SQLBrowseConnect, plus loin dans cette section.