Delphi动态配置ODBC数据源--SQL Server版本

(摘自)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 = 房屋销售数据库 是存在的,否则可能会产生未知的错误。