如何更改中间层中连接的数据库及数据表? ( 积分: 16 )

  • 主题发起人 主题发起人 youxiazhu
  • 开始时间 开始时间
Y

youxiazhu

Unregistered / Unconfirmed
GUEST, unregistred user!
一个三层结构,需要使用多个数据库,中间层只有一个ADOConnection组件,需要动态更改连接的数据库。类似的,对于每个数据库,唯一的ADOQuery组件也需要动态更改连接的数据表。 这个功能该如何实现?是在客户端实现,还是在中间层定义一个接口?
我在中间层定义一个接口,可是访问这两个组件时出现“Access voilation ...”即访问冲突。
 
一个三层结构,需要使用多个数据库,中间层只有一个ADOConnection组件,需要动态更改连接的数据库。类似的,对于每个数据库,唯一的ADOQuery组件也需要动态更改连接的数据表。 这个功能该如何实现?是在客户端实现,还是在中间层定义一个接口?
我在中间层定义一个接口,可是访问这两个组件时出现“Access voilation ...”即访问冲突。
 
好,帮顶


--------签名档---------------------------

比肩国内顶尖源码下载站点 -> 源码我爱你

http://www.source520.com
http://www.source520.net
80G源码电子书免费免注册下载,大量精辟技术文档库随时更新
******************************************************************
附:为了站点持续发展,现有本站近年来收藏的大量大型商业源码低价出售,
详情请进入以下链接查看:
http://www.source520.com/building_delphi.htm

浏览商业代码请从如下URL进入查看实物:
1.商业源码库1: ftp://source520see3:browse@61.152.199.245/
2.商业源码库2: ftp://source520see2:browse@61.152.199.245/
 
我是通过客户端来实现的
 
在中間層寫過方法來實現。只是需要傳遞參數就可以了。
就同在本地調用一樣。
例如:
例如:
服務端:
function TTmrpserver.apply_modifyrecord(const mtable, mkeyvalue,
msql: WideString): Integer;
var
tempsql:string;
begin
tempsql:='update '+mtable+' set ';
tempsql:=tempsql+msql+' where me_sn='+mkeyvalue;
result:=apply_modifyrecords(tempsql);
end;
客戶端:
function apply_modifyrecord(const mtable, mkeyvalue, msql: widestring): integer;
begin
try
create_adisp;
Result := P_adisp.apply_modifyrecord(mtable, mkeyvalue, msql);
if Result = 0 then
MessageBox(0, '記錄修改失敗,請稍後再試!', '提示', mb_ok);
finally
destory;
end;
end;
其實你的執行存儲過程也可以這樣寫的。只是稍微有些改動,兄弟試下吧。
 
可以通过客户端实现,直接执行“use [要转到的库]”,比较方便
 
谢谢上面两位大哥!
访问冲突的错误是由于我引用出错,其实与此问题无关。
大哥提到的方法我没有试验成功,delphisuccess提到了存储过程,真的有这么复杂吗?能不能直接修改服务端connection组件的属性就实现更改连接的数据库呢?
 
不用更改connection组件的属性,就直接用客户端数据集执行一次"use [要转到的库]",则connection组件会自动转所连接的库的
 
后退
顶部