如何在程序里创建odbc?(50分)

  • 主题发起人 主题发起人 westdog
  • 开始时间 开始时间
在http://www.wapsec.com.cn/delphi/有我做的一个控件,可以动态管理odbc.
 
请参考ODBC的API,在文件Odbcjet.hlp里,看SQLConfigDataSource
可调用 SQLConfigDataSource 函数来动态地添加、修改或删除数据源。
此函数使用关键字来设定连接选项,而当通过“控制面板”来连接时,
该选项则通过“设置”对话框来设定。当要添加、
修改或删除数据源,又不希望显示“设置”对话框时,应该使用此函数。
 
给一段代码给你看看,可以创建用户和系统ODBC,数据库用的是SQL SERVER7
procedure TForm1.Button1Click(Sender: TObject);
var
ls_dsn,ls_database,ls_desc,ls_login_id,ls_server_ip:string;
lbl_user_dsn:boolean; // true-->user_dsn,false-->system dsn
registerTemp : TRegistry;
begin
//判断用户输入的信息是否正确
ls_dsn:=trim(dsn_edit.text); //取得数据源名
ls_database:=trim(database_edit.text); //取得数据库名
ls_desc:=trim(desc_edit.text); //取得描述名
ls_login_id:=trim(login_id_edit.text); //取得用户名
//取得数据库所在的IP地址
ls_server_ip:=server_ip_Edit.text;

//判断数据源名是否合法
if ls_dsn='' then
begin
showmessage('请输入数据源名');
dsn_edit.SetFocus ;
exit;
end;

//判断数据库名是否合法
if ls_database='' then
begin
showmessage('请输入要连接的数据库名');
database_edit.SetFocus ;
exit;
end;

//判断用户名是否合法
if ls_login_id='' then
begin
showmessage('请输入用户名');
login_id_edit.SetFocus ;
exit;
end;
//判断服务器IP地址是否合法
if ls_server_ip='0.0.0.0' then
begin
showmessage('请输入服务器IP地址');
server_ip_ipedit.SetFocus ;
exit;
end;

registerTemp := TRegistry.Create; //建立一个Registry实例
with registerTemp do
begin
if userdsn_radiobutton.Checked then
RootKey:=HKEY_CURRENT_USER //设置根键值为HKEY_CURRENT_USER
else
RootKey:=HKEY_LOCAL_MACHINE; //设置根键值为HKEY_LOCAL_MACHINE

//找到Software/ODBC/ODBC.INI/ODBC Data Sources
if OpenKey('Software/ODBC/ODBC.INI/ODBC Data Sources',True) then
begin //注册一个DSN名称
WriteString( ls_dsn, 'SQL Server' );
end
else
begin//创建键值失败
memo1.lines.add('增加ODBC数据源失败'+#13+formatdatetime('yyyy-mm-dd hh:mm:ss',now));
exit;
end;
CloseKey;

//找到或创建Software/ODBC/ODBC.INI/MyAccess,写入DSN配置信息
if OpenKey('Software/ODBC/ODBC.INI/'+ls_dsn,True) then
begin
WriteString( 'Database',ls_database);//数据库
WriteString( 'Description',ls_desc);//数据源描述
WriteString( 'Driver', 'C:/windows/SYSTEM/sqlsrv32.dll' );//驱动程序DLL文件
Writestring( 'LastUser',ls_login_id);//
WriteString( 'Server', ls_server_ip);//用户名称
end
else//创建键值失败
begin
memo1.lines.add('增加ODBC数据源失败'+#13+#10+formatdatetime('yyyy-mm-dd hh:mm:ss',now));
exit;
end;
CloseKey;

showmessage('已成功创建新的ODBC数据源');
memo1.lines.add('已成功创建新的ODBC数据源'+#13+#10+formatdatetime('yyyy-mm-dd hh:mm:ss',now));
Free;
end;
end;
 
接受答案了.
 
后退
顶部