(摘自)http://jxlearnew.blog.163.com/blog/static/549786592007102451431413/
这里介绍一种用Delphi来实现动态注册的方法,希望对各位有所帮助.
这里我们直接使用ODBCCP32.DLL中提供的SQLConfigDataSource函数来实现,该函数在在Delphi中可声明如下:
//配置ODBC数据源,成功则返回True
function SQLConfigDataSource(
hwndParent: Integer;
fRequest: LongInt;
lpszDriverString: string;
lpszAttributes: string
): LongBool; stdcall; external ''''ODBCCP32.DLL'''';
参数说明:
1、hwndParent: 父窗口Handle,当指定为0时不会出现对话框,否则会弹出标准的ODBC配置对话框
2、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;
3、lpszDriverString: 驱动程序名称,就是在ODBC设置中显示的驱动程序名称,如SQL Server以及 Microsoft Access Driver (*.mdb)
4、lpszAttributes: 此DSN的一些属性,可有多项,各项之间用分号(;)分隔
首先在Delphi中对以上函数进行声明之后,接下来的步骤如下:
1、声明常量:
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;
2、在Form中放入一个Button,在其事件中写
procedure TForm1.Button1Click(Sender: TObject);
begin
SQLConfigDataSource(0,
ODBC_ADD_SYS_DSN,//~换成Handle就是手工配置
'SQL Server', //数据库类型
'DSN=house'#0 + //数据源名称
'Server=(local)'#0 + //SQL Server服务器名
'Database=房屋销售数据库'#0 + //数据库名称
'Description=动态配置ODBC'#0 //描述
);
end;
单击Button1后,数据源house的信息就已经成功写入到注册表中
以上方法已经在Delphi 7.0下测试通过,不过在应用本方法前首先确保你的机器上已经正确安装了Microsoft SQL Server2000数据库系统,并且 Database = 房屋销售数据库 是存在的,否则可能会产生未知的错误。