Retour à la page d'accueil

DAIGL - Delphi
Création d'un lien ODBC

Auteur : Jean HENRI
 

Stockage des liens ODBC

Les liens ODBC sont mémorisés sur une machine Windows dans la base de registre à partir de la Clé racine HKEY_CURRENT_USER et sous la clé \Software\ODBC\ODBC.INI

Pour pouvoir créer (et supprimer) un lien ODBC par programme, il faut commencer par créer un lien ODBC à l'aide de l'administrateur de liens ODBC. Par exemple pour créer un lien vers une base MySql :

Ensuite vous utiliser l'éditeur de base de registre pour aller consulter la définition de votre lien sous la clé correspondant au nom Windows DSN (ici BaseMonnaie) :

Vous obtenez donc dans la fenêtre de droite toutes les informations nécessaires :

 Base MySql 
 Windows DSN Name : BaseMonnaie 
Nom
Contenu
Database monnaie
Description  
Driver C:\WINNT\System32\myodbc.dll
Option 0
Password dollar
Port  
Server serveurjh
Stmt  
User banquier

Création d'un lien ODBC par programme

Vous pourrez trouver d'autres explications (notamment la création d'un alias BDE) sur la page de téléchargement du driver ODBC MySql (voir la release note, version locale)

Sous Delphi, vous pouvez alors écrire les procédures suivantes :

procedure CreerLienODBCMySql(var AliasODBC : string);
var
  Reg     : TRegistry;
  NomLien : string;
  NumLien : word;
begin
  // Création d'un objet TRegistry
  Reg := TRegistry.Create;

  // Choix de la clé de registre
  Reg.RootKey := HKEY_CURRENT_USER;

  // Fabrication d'un nom de lien ODBC qui n'existe pas déjà
  NumLien := 0;
  repeat
    NumLien := NumLien+1;
    NomLien := AliasODBC+inttostr(NumLien);
  until not Reg.KeyExists('\Software\ODBC\ODBC.INI\'+ NomLien);
  Reg.OpenKey('\Software\ODBC\ODBC.INI\'+ NomLien,True);

  // On indique au programme appelant le nom ODBC qui a été créé
  AliasODBC := NomLien;

  // Initialisation du lien ODBC
  Reg.WriteString('Database', 'Monnaie');
  Reg.WriteString('Description', '');
  Reg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');
  Reg.WriteString('Option', '0');
  Reg.WriteString('Password', 'dollar');
  Reg.WriteString('Port', '');
  Reg.WriteString('Server', 'serveurjh');
  Reg.WriteString('Stmt', '');
  Reg.WriteString('User', 'banquier');

  // Enregistrement du lien dans les Data Sources d'ODBC
  Reg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
  Reg.WriteString(NomLien, 'MYSQL');

  // Fin de la création du lien ODBC
  Reg.CloseKey;
  Reg.Free;
end;

procedure SupprimerLienODBC(var AliasODBC : string);
var
  Reg     : TRegistry;
begin
  // Création d'un objet TRegistry
  Reg := TRegistry.Create;
  // Choix de la clé de registre
  Reg.RootKey := HKEY_CURRENT_USER;

  // Suppression du lien ODBC
  Reg.DeleteKey('\Software\ODBC\ODBC.INI\' + AliasODBC);

  // Suppression de l'enregistrement du lien ODBC
  Reg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
  Reg.DeleteValue(AliasODBC);

  // Fin de la suppression du lien ODBC
  Reg.CloseKey;
  Reg.Free;
  inherited;
end;

La création du lien ODBC se fera de préférence sur l'événement OnCreate de votre Module de Données, tandis que la suppression du lien ODBC se fera sur l'événement OnDestroy de votre Module de Données.

Après la création du lien, vous devez penser à mettre à jour le nom ODBC qui a été complété dans la procédure CreerLienODBCMySql dans votre composant TDataBase.

L'activation des composants utilisant directement votre lien ODBC (TDataBase, TTable, TQuery, ...) pourra se faire elle aussi dans votre Module de Données, après la création du lien ODBC ou à tout autre endroit de votre appli (en étant certain que le lien ODBC est bien créé).


Page créée le 12 déc 2002
Mise à jour le 12 déc 2002
auteur : Jean HENRI