我用odbc, 分发软件时候要打包 bde吗?(100分)

  • 主题发起人 主题发起人 waterjin
  • 开始时间 开始时间
W

waterjin

Unregistered / Unconfirmed
GUEST, unregistred user!
我在本机上用mysql,odbc 做数据库的 DSN,在本机上编译运行很好。
到本局域网的别的机器,设置好 odbc,odbc能正确连通本机的mysql服务,问题是:
我还需要进行打包bde吗?是不是只要把project1.exe拷 过去就行了。我拷过去不能运行,
好象提示初始化bde错误,用odbc 连接远程数据库,也要进行bde 打包吗?
那个d6的installshield limit edition太难了,搞了半天,也不知道怎么把我的程序打包分发,
哪里有它的资料啊?
刚刚初学delphi, 不好意思,请教各位了
 
使用Delphi,用了BDE下面的控件,虽然是连接ODBC,但是还是需要BDE的基本库的。
 
不用打包,只需在注册表中加入相应的键值就可以的.
 
使用ado控件就不需要分发bde
 
必须打包,Delphi里面的DATABASE、QUERY、TABLE等控件是通过BDE连接ODBC的,除非你不使用这些控件。
 
smallbs说的没错。
 
所谓创建ODBC的DSN, 实际是创建在注册表中的。
最简单就是先在系统里用手工设置好DSN,然后在注册表里查找刚设置的DSN,记下各个键值。
然后再程序里先查找这些键值,在代码依样子写进去就可以了。
下面是创建SQL server的ODBC的DSN的代码, 你可以参考一下。
var
reg: TRegistry;
Driver: string;
begin
//建立和更新odbc数据源
//查找ODBCINST.INI键,如果sql server的驱动程序没有安装,则提示退出
//如果存在,则进行配置
reg := TRegistry.Create;
try
with regdo
begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('Software/ODBC/ODBCINST.INI/SQL Server', False) then
begin
//如果存在sql server 驱动程序
Driver := ReadString('Driver');
CloseKey;
if OpenKey('Software/ODBC/ODBC.INI/ODBC Data Sources', True) then
begin
//注册一个DSN名称
WriteString(Edit_DataSource.Text, 'SQL Server');
end
else
begin
//创建键值失败
Application.MessageBox(pchar('在创建DSN' + edit_datasource.text + '时发生错误'), '创建ODBC数据源失败', MB_ICONINFORMATION or MB_OK);
exit;
end;
CloseKey;
//end 建立dsn
if OpenKey('Software/ODBC/ODBC.INI/' + Edit_DataSource.Text, True) then
begin
WriteString('Database', Edit_DataSource.Text);
WriteString('Driver', Driver);
WriteString('LastUser', Edit_LoginUser.Text);
WriteString('Server', Edit_Ip.Text);
end
else
begin
//创建键值失败
Application.MessageBox(pchar('在创建DSN' + edit_datasource.text + '时发生错误'), '创建ODBC数据源失败', MB_ICONINFORMATION or MB_OK);
exit;
end;
CloseKey;
end
else
Application.MessageBox('在当前机器上没有安装 SQL Server的ODBC 驱动程序!,请安装相应的驱动程序', '驱动程序出错', MB_ICONINFORMATION or MB_OK);
CloseKey;
end;
finally
reg.Free;
end;
end;

 
谢谢,我懂了,谢谢htw说的这么多,我手工设置好了dsn,还要在程序中写啊?
我觉得在odbc 中手工设置好,测试连接数据库服务成功就可以了在程序中用这个dsn了吧?
 
后退
顶部