关于ADOConnection连接多个数据库的问题?(在线等待)急!急! 各位高手如何用ADOConnection连接多个数据库?ADOConnection组件有个ConnectionString的属性,但不能给它赋值呀!请高手执教!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function GetConnectionString: string;var SYSINI: TINIFile; ServerName, UserName, Password, tmpstr: string;begin SYSINI := TIniFile.Create(ExtractFilePath(Application.ExeName)+'DB.INI'); try ServerName := SYSINI.ReadString('Database', 'ServerName', ''); UserName := SYSINI.ReadString('Database', 'UserName', ''); tmpstr := SYSINI.ReadString('Database', 'Password', ''); Password := Decrypt(tmpstr, ''); Result := ''; Result := 'Provider=OraOLEDB.Oracle.1;Password=' + Password + ';Persist Security Info=True;User ID=' + UserName + ';Data Source='+ServerName+';Extended Properties=""'; finally SYSINI.Free; end;end;上面是我的方法,我把connectionstring需要的内容写到db.ini这个配置文件中,需要的时候再从文件中读取出来,动态配置adoconnection;函数的调用 : begin Application.CreateForm(TDataModule1, DataModule1); DataModule1.ADOConnection1.Connected:= false; try DataModule1.ADOConnection1.ConnectionString:= GetConnectionString; DataModule1.ADOConnection1.Connected:= true; except MessageBox(Application.Handle,'数据库初始化设置错误,请与系统管理员联系!','错误',MB_OK OR MB_ICONSTOP); Exit; end; Application.CreateForm(TMainform, Mainform); Application.Run; end; AdoConnection的conntionstring属性需要AdoConnection.Close之后才可以赋值的你可以使用多个AdoConnection呀! 各位大侠,我用的是ACCESS数据库,我这写的我给ADOConnection1.ConnectionString:=ConnectionString1+ConnectionString2+ConnectionString3+ConnectionString4+ConnectionString5;(ConnectionString1:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;'+'Data Source=C:\Job1\'+Project_name+'.mdb'; ConnectionString2:='Mode:=ReadWrite;Extended Properties:="";Persist Security Info:=False;Jet OLEDB:System database:="";'; ConnectionString3:='Jet OLEDB:Registry Path:="";Jet OLEDB:Database Password:="";Jet OLEDB:Engine Type:=4;Jet OLEDB:Database Locking Mode:=0;Jet OLEDB:Global Partial Bulk Ops:=2;'; ConnectionString4:='Jet OLEDB:Global Bulk Transactions:=1;Jet OLEDB:New Database Password:="";Jet OLEDB:Create System Database:=False;Jet OLEDB:Encrypt Database:=False;'; ConnectionString5:='Jet OLEDB:Don'+'+'''+'t Copy Locale on Compact:=False;Jet OLEDB:Compact Without Replica Repair:=False;Jet OLEDB:SFP:=False';)也就是我把连接给分开了,调试通过了。但一用到备份的数据库就有个错误:找不D到可安装的ISAM 。 不明白你的做法。不过我想你知道你有没有测试这一个连接呢?如果测试了能够成功的话应该是其它的问题不是connectionstring的问题吧。我个人也是把connection分开使用的,因为如果单独这样用的话好象会超过255个限制,也不知道是什么原因。 现存几个datalink.udl,然后运行时动态更改connectionstring:='file name=datalink.udl'; ADOConnection.ConnectionString是可以给它赋值的呀。不过赋值完成以后,还要把ADOConnection.Connected:=True才行。 phy(我希望我是高手,却怎么学都是菜鸟。)就是你说的,没办法测试的,我要用一个ADOConnection连接不同的数据库。这就是我的要求,我看了楼上几个朋友的留言,我感觉我做的和他们的道理是一样的,但编译通过了,程序出错,错误信息:“找不到可安装的ISAM ”那位高手知道给我个提示谢谢了 指定进程添加控件 有文件实时监控的软件吗?? 有关for循环的问题,我是初学者,请哪位高手帮忙看下错在哪里。系统提示存储空间不足。 大家都用什么控件做表格式录入? 如果在20秒以内你不能看懂笑话的意思,说明你还纯洁 除了使用jpegimage以外还有什么办法实现图象的压缩 请教!? 在对SQL SERVER处理中,对于字段TEXT类型字段的字符处理 急需delphi4.0和vb4.0,要分/rmb均可 放大一幅画的原理是什么? SQL查询为什么会是这样的结果? 需要各位高手,大虾的指点!
var
SYSINI: TINIFile;
ServerName, UserName, Password, tmpstr: string;
begin
SYSINI := TIniFile.Create(ExtractFilePath(Application.ExeName)+'DB.INI');
try
ServerName := SYSINI.ReadString('Database', 'ServerName', '');
UserName := SYSINI.ReadString('Database', 'UserName', '');
tmpstr := SYSINI.ReadString('Database', 'Password', '');
Password := Decrypt(tmpstr, '');
Result := '';
Result := 'Provider=OraOLEDB.Oracle.1;Password=' + Password + ';Persist Security Info=True;User ID=' + UserName + ';Data Source='+ServerName+';Extended Properties=""';
finally
SYSINI.Free;
end;
end;
上面是我的方法,我把connectionstring需要的内容写到db.ini这个配置文件中,需要的时候再从文件中读取出来,动态配置adoconnection;
函数的调用 :
begin
Application.CreateForm(TDataModule1, DataModule1);
DataModule1.ADOConnection1.Connected:= false;
try
DataModule1.ADOConnection1.ConnectionString:= GetConnectionString;
DataModule1.ADOConnection1.Connected:= true;
except
MessageBox(Application.Handle,'数据库初始化设置错误,请与系统管理员联系!','错误',MB_OK OR MB_ICONSTOP);
Exit;
end;
Application.CreateForm(TMainform, Mainform);
Application.Run;
end;
需要AdoConnection.Close之后才可以赋值的
你可以使用多个AdoConnection呀!
我给ADOConnection1.ConnectionString:=ConnectionString1+ConnectionString2+ConnectionString3+ConnectionString4+ConnectionString5;
(ConnectionString1:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;'+'Data Source=C:\Job1\'+Project_name+'.mdb';
ConnectionString2:='Mode:=ReadWrite;Extended Properties:="";Persist Security Info:=False;Jet OLEDB:System database:="";';
ConnectionString3:='Jet OLEDB:Registry Path:="";Jet OLEDB:Database Password:="";Jet OLEDB:Engine Type:=4;Jet OLEDB:Database Locking Mode:=0;Jet OLEDB:Global Partial Bulk Ops:=2;';
ConnectionString4:='Jet OLEDB:Global Bulk Transactions:=1;Jet OLEDB:New Database Password:="";Jet OLEDB:Create System Database:=False;Jet OLEDB:Encrypt Database:=False;';
ConnectionString5:='Jet OLEDB:Don'+'+'''+'t Copy Locale on Compact:=False;Jet OLEDB:Compact Without Replica Repair:=False;Jet OLEDB:SFP:=False';
)也就是我把连接给分开了,调试通过了。但一用到备份的数据库就有个错误:找不D到可安装的ISAM 。
不过我想你知道你有没有测试这一个连接呢?如果测试了能够成功的话应该是其它的问题不是connectionstring的问题吧。我个人也是把connection分开
使用的,因为如果单独这样用的话好象会超过255个限制,也不知道是什么原因。
不过赋值完成以后,还要把ADOConnection.Connected:=True才行。