发布程序时对ODBC数据源的配置方法

                            (评分: , 回复: 0, 阅读: 10) »» 
方法1:    修改注册表
   可在制作安装程序时,利用安装程序的制作工具来修改注册表,完成ODBC数据源的配置,
   ODBC可用的驱动程序放在系统注册表的
   HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI    下,
   ODBC的  System  DSN  在系统注册表的
   HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI  下,
   ODBC的  User  DSN  在系统注册表的  HKEY_CURRENT_USER\Software\ODBC\ODBC.INI  下
             你可以打开注册表看一看就明白了!
方法2:  程序设置法
可用自己的程式序来完成ODBC的配置,一种简单的方法是使用ODBCCP32.DLL
中提供的一个函数来实现,
此函数在Delphi中可声明如下:

//配置ODBC数据源,成功则返回True
function  SQLConfigDataSource(
                 hwndParent:  Integer;    
                 fRequest:  LongInt;    
                 lpszDriverString:  string;  
                 lpszAttributes:  string  
         ):  LongBool;  stdcall;  external  'ODBCCP32.DLL';
参数说明:
         hwndParent:  
   父窗口Handle,当指定为0时不会出现对话框,否则会弹出标准的ODBC配置对话框
         fRequest:  命令请求,用来指明你要完成的功能,其值可为:
                             ODBC_ADD_DSN                =  1;
                             ODBC_CONFIG_DSN          =  2;
                             ODBC_REMOVE_DSN          =  3;
                             ODBC_ADD_SYS_DSN        =  4;
                             ODBC_CONFIG_SYS_DSN  =  5;
                             ODBC_REMOVE_SYS_DSN  =  6;
         lpszDriverString:  
     驱动程序名称,就是在ODBC设置中显示的驱动程序名称,
     如  Microsoft  Access  Driver  (*.mdb)
         lpszAttributes:  此DSN的一些属性,可有多项,各项之间用分号(;)分隔用法如下:          
const
   ODBC_ADD_DSN                =  1;
   ODBC_CONFIG_DSN          =  2;
   ODBC_REMOVE_DSN          =  3;
   ODBC_ADD_SYS_DSN        =  4;
   ODBC_CONFIG_SYS_DSN  =  5;
   ODBC_REMOVE_SYS_DSN  =  6;
在Form中放入一个Button,在其事件中写
procedure  TForm1.Button1Click(Sender:  TObject);
begin
SQLConfigDataSource(
0,  
ODBC_ADD_SYS_DSN,  
'Microsoft  Access  Driver  (*.mdb)',  
         'DSN=MyAccessDB;
DBQ=C:\MyDB\MyDB.MDB;
DefaultDir=C:\MyDB;FIL=MS  Access;
MaxBufferSize=2048;
PageTimeout=5;
Description=我的数据库'    );
end;
单击Button1后
再打开控制面板的ODBC设置程序,可看到其中已加入名为MyAccessDB的DSN
你也可以在系统注册表中看到新加入了
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\MyAccessDB键,
其它存放着函数中指定的参数.
若改为
procedure  TForm1.Button1Click(Sender:  TObject);
begin
SQLConfigDataSource(
         Handle,
         ODBC_ADD_SYS_DSN,
         'Microsoft  Access  Driver  (*.mdb)',  
         'DSN=MyAccessDB;DBQ=C:\MyDB\MyDB.MDB;
DefaultDir=C:\MyDB;FIL=MS  Access;
MaxBufferSize=2048;PageTimeout=5;
Description=我的数据库'    );
end;  

 

                                

查看回复