Partager via


Source de données : configuration d'une source de données ODBC par programme

Cette rubrique explique comment configurer les noms de sources de données ODBC (Open Database Connectivity) par programmation. Cela vous donne la possibilité d’accéder aux données sans forcer l’utilisateur à utiliser explicitement l’administrateur ODBC ou d’autres programmes pour spécifier les noms des sources de données.

En règle générale, un utilisateur exécute l’administrateur ODBC pour créer une source de données si le système de gestion de base de données associé prend en charge cette opération.

Lorsque vous créez une source de données ODBC Microsoft Access via l’administrateur ODBC, vous avez deux choix : vous pouvez sélectionner un fichier .mdb existant ou créer un fichier .mdb. Il n’existe aucun moyen programmatique de créer le fichier .mdb à partir de votre application ODBC MFC. Par conséquent, si votre application exige que vous placez des données dans une source de données Microsoft Access (fichier .mdb), vous souhaiterez probablement avoir un fichier .mdb vide que vous pouvez utiliser ou copier chaque fois que vous en avez besoin.

Toutefois, de nombreux SGBD autorisent la création de sources de données par programmation. Certaines sources de données conservent une spécification de répertoire pour les bases de données. Autrement dit, un répertoire est la source de données et chaque table de la source de données est stockée dans un fichier distinct (dans le cas de dBASE, chaque table est un fichier .dbf). Les pilotes pour d’autres bases de données ODBC, telles que Microsoft Access et SQL Server, nécessitent que certains critères spécifiques soient satisfaits avant qu’une source de données puisse être établie. Par exemple, lorsque vous utilisez le pilote ODBC SQL Server, vous devez avoir établi un ordinateur SQL Server.

Exemple SQLConfigDataSource

L’exemple suivant utilise la ::SQLConfigDataSource fonction API ODBC pour créer une source de données Excel appelée Nouvelle source de données Excel :

SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Excel Files (*.xls)",
                   "DSN=New Excel Data Source\0"
                   "Description=New Excel Data Source\0"
                   "FileType=Excel\0"
                   "DataDirectory=C:\\EXCELDIR\0"
                   "MaxScanRows=20\0");

Notez que la source de données est en fait un répertoire (C :\EXCELDIR) ; ce répertoire doit exister. Le pilote Excel utilise des répertoires comme sources de données et fichiers en tant que tables individuelles (une table par fichier .xls).

Pour plus d’informations sur la création de tables, consultez Source de données : Création par programmation d’une table dans une source de données ODBC.

Les informations suivantes décrivent les paramètres qui doivent être passés à la ::SQLConfigDataSource fonction API ODBC. Pour l’utiliser ::SQLConfigDataSource, vous devez inclure le fichier d’en-tête Odbcinst.h et utiliser la bibliothèque d’importation Odbcinst.lib. En outre, Odbccp32.dll devez être dans le chemin d’accès au moment de l’exécution (ou Odbcinst.dll pour 16 bits).

Vous pouvez créer un nom de source de données ODBC à l’aide de l’administrateur ODBC ou d’un utilitaire similaire. Toutefois, il est parfois souhaitable de créer un nom de source de données directement à partir de votre application pour obtenir l’accès sans demander à l’utilisateur d’exécuter un utilitaire distinct.

L’administrateur ODBC (généralement installé dans Panneau de configuration) crée une nouvelle source de données en plaçant des entrées dans le Registre Windows (ou, pour 16 bits, dans le fichier Odbc.ini). Odbc Driver Manager interroge ce fichier pour obtenir les informations requises sur la source de données. Il est important de savoir quelles informations doivent être placées dans le Registre, car vous devez la fournir avec l’appel à ::SQLConfigDataSource.

Bien que ces informations puissent être écrites directement dans le Registre sans utiliser ::SQLConfigDataSource, toute application qui le fait repose sur la technique actuelle utilisée par le Gestionnaire de pilotes pour conserver ses données. Si une révision ultérieure du Gestionnaire de pilotes ODBC implémente la conservation des enregistrements sur les sources de données d’une autre manière, toute application qui utilise cette technique est rompue. Il est généralement conseillé d’utiliser une fonction API lorsqu’une fonction est fournie. Par exemple, votre code est portable de 16 bits à 32 bits si vous utilisez la ::SQLConfigDataSource fonction, car la fonction écrit correctement dans le fichier Odbc.ini ou dans le Registre.

Paramètres SQLConfigDataSource

Le code suivant explique les paramètres de la ::SQLConfigDataSource fonction. La plupart des informations sont extraites de la référence du programmeur d’API ODBC fournie avec Visual C++ version 1.5 et ultérieure.

Prototype de fonction

BOOL SQLConfigDataSource(HWND hwndParent,UINT fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes);

Notes

Paramètres et utilisation

hwndParent
Fenêtre spécifiée en tant que propriétaire de toutes les boîtes de dialogue que le Gestionnaire de pilotes ODBC ou le pilote ODBC spécifique crée pour obtenir des informations supplémentaires de l’utilisateur sur la nouvelle source de données. Si le paramètre lpszAttributes ne fournit pas suffisamment d’informations, une boîte de dialogue s’affiche. Le paramètre hwndParent peut être NULL.

lpszDriver
Description du pilote. Il s’agit du nom présenté aux utilisateurs plutôt que du nom du pilote physique (dll).

lpszAttributes
Liste des attributs sous la forme « keyname=value ». Ces chaînes sont séparées par des terminateurs Null avec deux terminateurs null consécutifs à la fin de la liste. Ces attributs sont principalement des entrées spécifiques au pilote par défaut, qui entrent dans le Registre pour la nouvelle source de données. Une clé importante qui n’est pas mentionnée dans la référence de l’API ODBC pour cette fonction est « DSN » (« nom de source de données »), qui spécifie le nom de la nouvelle source de données. Le reste des entrées est spécifique au pilote pour la nouvelle source de données. Il n’est souvent pas nécessaire de fournir toutes les entrées, car le pilote peut inviter l’utilisateur avec des boîtes de dialogue pour les nouvelles valeurs. (Définissez hwndParent sur NULL pour provoquer cette erreur.) Vous souhaiterez peut-être fournir explicitement des valeurs par défaut afin que l’utilisateur ne soit pas invité.

Pour déterminer la description d’un pilote pour le paramètre lpszDriver à l’aide de l’administrateur ODBC

  1. Exécutez l’administrateur ODBC.

  2. Cliquez sur Ajouter.

Cela vous donne la liste des pilotes installés et de leurs descriptions. Utilisez cette description comme paramètre lpszDriver . Notez que vous utilisez la description entière, telle que « Fichiers Excel (*.xls) », y compris l’extension de nom de fichier et les parenthèses s’ils existent dans la description.

Vous pouvez également examiner le Registre (ou, pour 16 bits, le fichier Odbcinst.ini), qui contient la liste de toutes les entrées et descriptions du pilote sous la clé de Registre « Pilotes ODBC » (ou la section [Pilotes ODBC] dans Odbcinst.ini).

L’une des façons de trouver les noms de clés et les valeurs du paramètre lpszAttributes consiste à examiner le fichier Odbc.ini pour une source de données déjà configurée (peut-être une source de données configurée par l’administrateur ODBC).

Pour rechercher des noms de clés et des valeurs pour le paramètre lpszAttributes

  1. Exécutez l’éditeur de Registre Windows (ou, pour 16 bits, ouvrez le fichier Odbc.ini).

  2. Recherchez les informations sur les sources de données ODBC à l’aide de l’une des options suivantes :

    • Pour 32 bits, recherchez la clé HKEY_CURRENT_USER\Software\ODBC\ODBC. INI\ODBC Data Sources dans le volet gauche.

      Le volet droit répertorie les entrées du formulaire : « pub : REG_SZ :<data source name> », où <le nom> de la source de données est une source de données qui a déjà été configurée avec les paramètres souhaités pour le pilote que vous envisagez d’utiliser. Sélectionnez la source de données souhaitée, par exemple, SQL Server. Les éléments suivants la chaîne « pub : » sont, dans l’ordre, le nom de clé et la valeur à utiliser dans votre paramètre lpszAttributes .

    • Pour 16 bits, recherchez la section dans le fichier Odbc.ini marqué par [<nom> de la source de données].

      Les lignes suivantes sont de la forme « keyname=value ». Il s’agit exactement des entrées à utiliser dans votre paramètre lpszAttributes .

Vous pouvez également examiner la documentation du pilote spécifique que vous allez utiliser. Vous trouverez des informations utiles dans l’aide en ligne du pilote, auquel vous pouvez accéder en exécutant l’administrateur ODBC. Ces fichiers d’aide sont généralement placés dans le répertoire WINDOWS\SYSTEM pour Windows NT, Windows 3.1 ou Windows 95.

Pour obtenir de l’aide en ligne pour votre pilote ODBC

  1. Exécutez l’administrateur ODBC.

  2. Cliquez sur Ajouter.

  3. Sélectionnez le nom du pilote.

  4. Cliquez sur OK.

Lorsque l’administrateur ODBC affiche les informations relatives à la création d’une source de données pour ce pilote particulier, cliquez sur Aide. Cela ouvre le fichier d’aide pour ce pilote particulier, qui contient généralement des informations importantes sur l’utilisation du pilote.

Voir aussi

Source de données (ODBC)