我编译的程序单机使用时良好,局网访问时总出错!
问:
程序中有 C 端:
datadcomconnection userClientDataset
recordClientDataset userDatasource
recordDatasource userQuery
recordQuery user部分用来密码验证
record部分用来输入记录
请问是不是用一个dataDCOMconnection 就可以S 端用一个 datasetProvider就可以吗
我现在在单机上已通过,可以用到局网就不行了! S端有两个库user.db record.db
C端的userQuery有以下SQL语句:
userQuery.close;
userQuery.sql.clear;
userQuery.sql.add('select * from "user.db"');
userQuery.sql.add('where username=:user_name');
userQuery.sql.add('and pasd=:pass_word');
userQuery.parambyname('user_name').asstring:=edit1.text;
userQuery.parambyname('pass_word').asstring:=edit2.text;
userQuery.prepare;
userQuery.open; if userquery.recordcount=0 then
begin
messagedlg('wrong……',Information,[mbOK],0)
else if userQuery['type']='admin' then
……
问:
程序中有 C 端:
datadcomconnection userClientDataset
recordClientDataset userDatasource
recordDatasource userQuery
recordQuery user部分用来密码验证
record部分用来输入记录
请问是不是用一个dataDCOMconnection 就可以S 端用一个 datasetProvider就可以吗
我现在在单机上已通过,可以用到局网就不行了! S端有两个库user.db record.db
C端的userQuery有以下SQL语句:
userQuery.close;
userQuery.sql.clear;
userQuery.sql.add('select * from "user.db"');
userQuery.sql.add('where username=:user_name');
userQuery.sql.add('and pasd=:pass_word');
userQuery.parambyname('user_name').asstring:=edit1.text;
userQuery.parambyname('pass_word').asstring:=edit2.text;
userQuery.prepare;
userQuery.open; if userquery.recordcount=0 then
begin
messagedlg('wrong……',Information,[mbOK],0)
else if userQuery['type']='admin' then
……
解决方案 »
- 用delphi开发dll(封装tclientsocket类)时,如何在接受消息时立刻输出接收的消息,显示在调用程序中?
- 如何在程序中嵌入和使用WINDOWS MEDIA PLAY控件(非自带TMedia Play控件)
- 还是EXCEL问题,帮忙,在线等!
- 请问如何将DLL中的窗体显示在其调用程序的一个PANEL上呢, 非常感谢大家?
- 有在dephi中用过OLEVARIANT类型的吗?
- 急!!!!!一个数据库的连接问题.......在线等......
- 哪里有关于delphi7中报表设计的书籍下载?
- 程序崩溃救命
- delphi导入ActiveX控件的问题
- 给分了-如何编程实现FTP.....
- ado连接问题
- 嘿嘿,普通版没人理我,小小不见了,摩托被我加了水,QQ里找不到了。。。。
两个query怎么放在c端?
那你的clientdataset做什么用的?感觉你现在是直接用query和数据库相连,根本没有经过中间层不通主机直接当然不同了
我的DCOM配置就是看了你的才配好的有救了!那我想通C 端对 S 端查询,
一验证密码 user.db
二对记录进行操作 record.db请问怎么用C 联接 S 实现
是不是两个Query 都放在 S 端!请告知
在线!!谢谢!
客户端
datagrid...<--datasource<--clientdataset1<--Dcomconnection---|
clientdataset2 |
服务器 |
query1--->datasetprovider-->remotedatamodual------------------>|
query2--->datasetprovider按你的想法应该这样实现,不过结构有点笨重
我个人认为认证过程不用单独用一个datasetprovider,最后放入服务器的一个接口方法中 。
问的是不是让你……
不管,我不懂就问啦……
@_@
这个DECISIOH CUBE也是用来显示RECORD.DB的
我觉的你密码验证当然应该放在一个方法中,接口你现在用那个都成,可以用默认的接口,当然,你也可以再加一个接///不是很好,不过,倒是可以实现回调;
甚至你加一个协调接口类也成,用它来控制是否用户可以登录或是帮该用户建立连接,总之,这些你可以自己设置的;
密码验证的过程不是很复杂,你也可以得用变参,让客户端动态执行ClientDataSet.FeatchParams,然后你直接判断用户信息是否正确;
NO.2:
你对记录进行操作时应该会的,你可以理解和本地完全一样,而且,你同样可以将连接先给关了,(你的Pooler中应该有超时操作)当执行完毕之后直接用ApplyUpdates(0)进行提交;
NO.3:
结构:C端:
TClientDataSet/TDCOMConnection/.......
S端
TQuery or TADOQuery /TTable ot TADOTable or SQLUpdate /TProviderDataSet/TDataBase or TADOConnection;
NO.4:
小小是来帮助摩托大哥的,摩托大哥有点累了,不是帮楼主的,嘻嘻;楼主,不会介意吧,小小中间插了一棍子;
在csdn上Midas版看到类似这样的贴子,Midas/MTS/CORBA到底是什么关系;
在此,就自己对Midsa的认识说一说,而至于MTS or CORBA,前面我们曾很多的提到过,如果你有兴趣可以看一看前边的贴子;
在说Midas之前,我必须申明它和MTS or CORBA or DCOM or RMI是不同的概念;
Midas是Delphi多层应用系统的核心技术,就如以前的或是现在还是Delphi数据库的核心BDE一样,BDE是delphi的数据库引擎,那么我们也可以将MIDAS理解成Delphi处理多层分布式的一种引擎技术,更确定的说MIDAS是Delphi用于存取后端数据库数据的中介透明引擎,而对于客户来说是完全透明的,客户不知道自己所取数据来自何处,又将提交到何处;而程序员则可以通过Midas使用不同的组件存取不同的后端应用程序服务器;而后端的应用程序服务器可以是COM/DCOM应用程序服务器、MTS中介软件、CORBA应用程序服务器,甚至我们可以理解相当于用BDE连接或存取本地或是远程数据一样,这就是我理解的MIDAS的概念;
理解了它的概念之后,我们就可以对MIDAS进行进一步的认识,delphi所提供的MIDAS随着版本的增长,其功能也在不断的强大,最明显的改进应该是它提供了容错能力和负载平衡以及高效率等功能;前边说了,MIDAS是一种透明的中介引擎,主要又应用提现在那几个方面?可以从三个方面来分析,也就是说它主要提供了三个主要的中介者:
NO.1:无程数据中介者(Remote Data Broker):它主要提供客户端存取远程数据库的能力;
NO.2:Constraint:(可以理解为安全性检查),通过它,应用程序下载远程数据库对于数据设定的各种限制,这样,客户端可以在本地对所做操作进行检查,无须再上传到远程数据中或是应用服务器那儿进行检查,这显然可以增加网络负荷;
NO.3:企业对像中介者(Business Object Broker):允许应用系统开发执行企业逻辑的企业对像,并且提供容错和负载平衡能力;
而Midas的状态也可以说是它最大的变动和最成功的地方,Midas提倡无状态,由此才有Object Pooling/Data Pooling /Connect Pooling /以及和MTS的更好结合(以后我会提到相关的)/容错/负载平衡/数据无关等等
Midas的通讯协议同样也包含了三种:TCP/IP,DCOM ,OLE EnterPrise(每种协议都要用到TCP/IP Socket and MS RPC////这就是常见的PRC不可用错误的出现原因,前边有如何解决这种问题的贴子,请参照 );
因此,我们可以将MIDAS与DCOM/COM or MTS or CORBA or RMI完全的区分开来;
一种是中介引擎,而另一种是可以充当中介软件的技术;
在Delphi中,无论是用那一种结构进行连接,或是使用好一种技术。MIDAS都将它们统一起来,比如接口通一(区别是有,但是它能够给一个统一的定义说明就会让我们理解起来方便了很多)比如它提供了统一执着口 Provider(Delphi5有用,而之前的如MIDAS2.0 or MIDAS1.0就用它来进行存取数据,现在已经将其封装到TClientDataSet中);所有这一切都是MIDAS所提供的,而对于使用DCOM or MTS or CORBA (现在还不曾有听说支持RMI,但相信以后会支持的)却是我们不用关心的,这儿的差别只是我们利用那种机制才可以更好的于MIDAS更好的结合;
MIDAS所提供的中介、功能等都是在完全理解了什么是MIDAS的基础上才可以正确的应用的;所以不在本贴所讨论的范围,但小小会尽量抽出时间来将MIDAS的重要功能以及MIDAS的应用整理后放到坛子上和大定一起交流的;
-------------------------------------------------------------------
我在www.nxit.net/bbs上的一篇,呵呵,写的玩的;
Client -> 应用服务器 or 数据交换服务器 -> 远程数据库;
算了,不玩了,这个是摩托应该解决的贴子嘛;