社区
网络通信/分布式开发
帖子详情
求助:多层动态数据库连接问题?在线等
空中居士
2003-09-14 08:48:47
各位大侠,问题是这样的:
我有数据库A,B;库结构是一样的,在服务器端建了一个数据连接,连接到其中的a 或b。我如何实现在客户端根据用户的选择,动态的在A ,B数据库之间切换。
因为数据库可能还会增加c,d...;客户端程序不能固定指定连接A ,B数据库。
在何处写代码,用什么样的方式能实现这种功能呢?
多谢了!!
...全文
45
21
打赏
收藏
求助:多层动态数据库连接问题?在线等
各位大侠,问题是这样的: 我有数据库A,B;库结构是一样的,在服务器端建了一个数据连接,连接到其中的a 或b。我如何实现在客户端根据用户的选择,动态的在A ,B数据库之间切换。 因为数据库可能还会增加c,d...;客户端程序不能固定指定连接A ,B数据库。 在何处写代码,用什么样的方式能实现这种功能呢? 多谢了!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
空中居士
2003-09-20
打赏
举报
回复
谢谢各位,在各位的热情帮助下,这个困惑我多日的问题得到圆满解决。
有好多问题,知道了并不难,可不知道时,就是不知如何下手。
再次谢谢各位。
PrgmLover
2003-09-19
打赏
举报
回复
FrmData.DComConData.Connected:=false; //关时,
关掉连接再调服务端函数,这样肯定是要出错的
procedure TTzglSData.TzglConectData(const sConectStr: WideString);
begin
ADOConnectionData.close;
ADOConnectionData.ConnectionString:= sConectStr;
end;
xuecswl
2003-09-19
打赏
举报
回复
1.根据客户端的选择生产连接字符串,用ShowMessage(Connectionstr)看看连接字符串是否正确.
2.先关闭连接,再更改连接字符串
空中居士
2003-09-19
打赏
举报
回复
Tiejun_Chenfang()
连接字符串本身就是自动产生的,我只不过想改动其连接的数据库部分。也就是Initial Catalog=?
止止
可以不用写函数的,clientdataset有datarequest方法,他的参数可以向后台传递参数,后台的datasetprovider有ondatarequest事件可以接受那个参数,然后根据参数临时构造adoconnection的connectionstring,
当clientdataset较多时,会很麻烦。不如一次指定简单。
Tiejun_Chenfang
2003-09-19
打赏
举报
回复
你修改了后台的连接字符串,但前台并不知道,
用cds重新要一回数据即可
hiflower
2003-09-19
打赏
举报
回复
FrmData.DComConData.AppServer.TzglConectData(MyString);
FrmData.DComConData.Connected:=True;
顺序错了吧,应该先连接,再调用接口方法。
FrmData.DComConData.Connected:=True; FrmData.DComConData.AppServer.TzglConectData(MyString);
ClientDataSet1.Close;
ClientDataSet1.Open;
procedure TTzglSData.TzglConectData(const sConectStr: WideString);
begin
ADOConnectionData.close;
ADOConnectionData.ConnectionString:= sConectStr;
ADOConnectionData.Open;
end;
空中居士
2003-09-19
打赏
举报
回复
PrgmLover(爱国者) 按你的方法,程序不再报错,
但是在更改了连接串后,客户端的数据库并没有切换到新库,显示依然是原来的数据。
如何是好???
Tiejun_Chenfang
2003-09-18
打赏
举报
回复
你的连接字符串是不是谢太多的内容了,你可以让adoconnection在设计期通过connctionstr属性自动产生一次连接,他好像没有你这么多内容把?
你为什么把connctionstr写在前台,在后台构造不行吗?
可以不用写函数的,clientdataset有datarequest方法,他的参数可以向后台传递参数,后台的datasetprovider有ondatarequest事件可以接受那个参数,然后根据参数临时构造adoconnection的connectionstring,在对adoconnection的connectionstring负值前,connected要先为false;
空中居士
2003-09-18
打赏
举报
回复
// 根据选择的项目名称,确定所要连接的数据库
FrmData.DComConData.Connected:=false; //关时,出错信息为
Project prjTzglClinet.exe raised exception class EvariantInvalidOpError with message 'invalid variant operation'.Process stopped. Use Step or Run to continue
FrmData.DComConData.Connected:=True; //开时,出错信息为
对象打开时,操作不被允许
服务端变量类型为:sConectStr Bstr 〔in〕
idilent
2003-09-17
打赏
举报
回复
不让修改连接串是什么意思?能不能把出错信息什么的提供一下?
空中居士
2003-09-17
打赏
举报
回复
各位老大:
谢谢各位,不过好像此路不通,连接服务器后,不让修改连接串;不连接服务端,又说非法操作。
服务端代码:
procedure TTzglSData.TzglConectData(const sConectStr: WideString);
begin
ADOConnectionData.ConnectionString:= sConectStr;
end;
客户端代码
procedure TfrmGcmc.OKBtnClick(Sender: TObject);
var
myString:WideString;
begin
// 根据选择的项目名称,确定所要连接的数据库
FrmData.DComConData.Connected:=false; //开、关都不通
MyString:='Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=tzgl';
MyString:=MyString+trim(FrmData.cdsGcmc.FieldByName('工程编号').AsString);
MyString:=MyString+';Data Source=ZJX;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ZJX;Use Encryption for Data=False;Tag with column collation when possible=False';
FrmData.DComConData.AppServer.TzglConectData(MyString);
FrmData.DComConData.Connected:=True;
end;
错在何处
PrgmLover
2003-09-16
打赏
举报
回复
只要你用过一次就知道不难的。
你在应用层建一个Remote DataModal. 在那里输出函数。
打开应用层工程文件 在Delphi的菜单View--type Libery 中选中接口点右键(加函数,设参数),后面的操作不难了,看看就会明白的。
skypeople
2003-09-16
打赏
举报
回复
晕,,,师兄建意你静下心来看书,,,如果李维的那本书就复杂了,,,那你还是先看书再想着写三层吧,,,不然多半是一堆;;
中间层实际上是用DCOM的调用,,你只要在中间的COM结口中加入一个函数并实现它就可以,,前面就可以调用了,,,
在D的IDE中你只要在数据模块上按F12会出现可视化的窗口然后加入一个函数并定义相关的参数就可以了;D会帮你写好所有声明当然你还要实现他;;
最好还是去看一下书,,,
这里不好说清楚;
空中居士
2003-09-16
打赏
举报
回复
其实我不懂的是如何在远程数据模块的接口中添加FUNCTION函数和客户端如何调用!!
我看了李维的分布式多层应用,好像很复杂,
非得如此处理吗,有没有其他方法?
空中居士
2003-09-16
打赏
举报
回复
会者不难,难者不会。
WGYKING
2003-09-15
打赏
举报
回复
这应该不难吧?
34535345345345345345
2003-09-15
打赏
举报
回复
:0
空中居士
2003-09-14
打赏
举报
回复
哈哈,idilent(准备去刷碗) 你说的真不错,不亏是高手。
idilent
2003-09-14
打赏
举报
回复
让 lxpbuaa(桂枝香在故国晚秋)写一个发给你。哈哈
空中居士
2003-09-14
打赏
举报
回复
请问如何写呀? 能说的再详细吗?
加载更多回复(1)
J2EE环境配置课件ppt
这不仅包括了基础的开发工具配置,还涉及到了
数据库连接
等高级功能。对于初学者来说,这些步骤可能略显复杂,但随着实践经验的积累,将会变得越来越熟练。 此外,值得注意的是,虽然这里提到了特定的版本号(例如...
Origin7.0实用教程
- **与其他软件的集成**:Origin能够与数据库软件、办公软件、图像处理软件等进行无缝连接。 - **编程支持**:支持使用C语言编写数据分析程序,也可使用内置的LabTalk语言进行编程。 #### 六、学习资源 - **参考...
neo4j-community-3.5.6-windows.rar
- Neo4j有一个活跃的开发者社区,提供了丰富的文档、教程和插件,以及
在线
论坛和邮件列表供用户交流和
求助
。 总的来说,"neo4j-community-3.5.6-windows.rar"提供了在Windows环境下探索和利用图数据库的平台,无论...
NIIT第二个模块考试截图
J2EE是一种用于构建企业级应用的开放源代码框架,涵盖了Web服务、服务器端组件、
数据库连接
等技术。这可能是NIIT课程中的一个重要部分,因为J2EE是许多大型企业的首选平台,用于开发分布式、
多层
的Web应用。 根据...
心理咨询预约管理系统(javaEE),个人毕业设计.zip
在当今社会,心理健康
问题
日益受到人们的重视,心理咨询预约系统作为连接心理咨询师与
求助
者的桥梁,扮演着至关重要的角色。本项目是基于JavaEE技术栈开发的心理咨询预约管理系统,旨在提供一个便捷、高效的服务平台...
网络通信/分布式开发
1,594
社区成员
32,947
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章