CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  网络通信/分布式开发

关于ADO和三层结构的问题!!!!!

楼主nicksololynn(霹雳游侠)2003-04-04 19:43:04 在 Delphi / 网络通信/分布式开发 提问

我用DELPHI写数据库程序时,一般均用ADO。从未用过BDE之类。我的问题是ADO目前能没满足应用的要求吗,毕竟他与BDE相比还较年轻。  
  一。有何种情况,BDE可以做,而ADO做不了?请用过的讲讲吧。  
  二。另外,大家都知道在decisioncube中用的是ODBC联接数据库,很麻烦,有没有办法用ADO做?  
  三。有哪位用过DELPHI7?它用的ADO支持ADO.NET吗?此个关于问题二中的情况解决了吗?  
  四。ADO.net用的是不是就是ADO   2.7  
  五。有哪们可以给我一个基本的三层结构的标准解决方法。我的意思是客户端用什么,RemoteDataModule中用什么?此外有多种联接方法(dcom,corba,tcpip,ect),到底用哪种比较好。  
  请高手多多指教。mailto:nicksolo@eyou.com  
  问题点数:0、回复次数:17Top

1 楼greenlotus(云水居士)回复于 2003-04-04 20:30:13 得分 0

一个三层的例子:  
   
  应用服务器的编写:  
  (1)新建一个工程  
  (2)点击“File”“New”“Other”,选择Multiter页标签的Remote   Data   Module  
  (3)设置CoClassName(例:输入TestServer),点击OK就会进入Remote   Data   Module编辑框  
  (4)在编辑框中可以添加任何与数据库相连的组件,既然你的机器上装了sql   server   ,你就可以   添加一个ADOConnection和ADOTable,进行数据库的连接设置。这里我要提醒一句,就是在用ADOConnection连接数据库的时候,最好把登陆数据库的密码保存下来,并且ADOTable1.active不要设置为True!!!然后再添加一个DataSetProvider1(在Data   Access页中),并将其DataSet设置为TADOTable1.  
  (5)编译运行此程序,就算注册了  
   
   
  客户端的编写:  
  (1)新建一个工程文件  
  (2)在其中添加SocketConnection1(在DataSnap页中),将它的Host设置为你的应用服务器所在的机器名,在ServerName的下拉列表框中选择应用服务器的名称,port默认为211(注意:TSocketConnection靠的是TCP/IP协议进行通讯,所以要在应用服务器端需额外运行Scktsrvr.exe程序,该程序在..\\Borland\Delphi6\Bin目录里)  
  (3)然后添加一个ClientDataSet1(在Data   Access中),将其RemoteServer设置为SocketConnection1,将PorviderName设置为DataSetProvider1,  
  (4)再添加一个DataSouce1和一个DbGrid1,将DataSouce1.DataSet设置为ClientDataSet1,DBGrid1.DataSource设置为DataSource1  
  (5)在FormCreate中编写代码如下:  
      procedure   TForm1.FormCreate(Sender:TObject);  
      begin  
              SocketConnection1.Connected:=True;  
              ClientDataSet1.Active:=True;  
      end;  
  (6)编译运行,你的客户端就可以读取Sql   Server数据库中的数据了!  
  Top

2 楼greenlotus(云水居士)回复于 2003-04-04 20:33:00 得分 0

声明:我可不是什么高手了,我仅仅是做过这个尝试而已!Top

3 楼nicksololynn(霹雳游侠)回复于 2003-04-06 20:22:41 得分 0

多谢了,老兄。但是我还是有个问题,那就是如何选择联接控件:DCOM,SOCKET,BORBA好像还有其他的。请说说它们分别适合用在什么场合下,各有什么优缺点。Top

4 楼greenlotus(云水居士)回复于 2003-04-07 12:49:29 得分 0

DCOM控件用的是DCOM协议进行数据通讯  
  Socket用的是TCP/IP进行数据通讯  
  WebConnection用的是Http协议,各有所长,一般的Delphi书中都有说明Top

5 楼hait(haitao)回复于 2003-04-07 16:53:08 得分 0

一下问这么多问题,我来说两句:  
  1   别的连接方式(bde、odbc等)能够做的,就一般的三层开发或c/s结构的开发来说,ADO基本上都可以。  
  2   decisioncube当然可以用Ado,我试过。  
  3   现在用delphi7开发,还是等等吧。用delphi6开发已经足以,它开发的三层系统还是比较稳定的。别着急用ado。net。新技术不是我们在实际开发中所追求的,等其稳定了在用。  
  4   好像不能够等同。  
  5   client端:Tclientdataset   +   连接(dcom、socket等等)  
    server端:remotedataset:Tdatasetprovider+   tAdoquery   +   tadoConnection。  
   
  Top

6 楼china_lyz(编程浪子)回复于 2003-04-07 23:43:17 得分 0

dcom分发的时候客户机需要dcom协议  
  socket比较好一点。不要太多的配置  
  给客户的时候方便一点Top

7 楼sywxy(学习DELPHI)回复于 2003-04-08 22:33:28 得分 0

Corba服务器上就无法用Ado连接数据库.Top

8 楼nicksololynn(霹雳游侠)回复于 2003-04-10 23:34:58 得分 0

hait请详细说一下如何用在Decisioncube中用ADO。请您能不能说的具体一点。我原来一直通过ODBC,在每个客户端都要配置数据源,太烦了。请高手指教。多谢。Top

9 楼hait(haitao)回复于 2003-04-14 11:54:40 得分 0

在窗体上放置一个Adoconnection和AdoQuery、Decisioncube.将Decisioncube的Dataset指向Adoqery。然后设定AdoQuery的Sql就可以了。Top

10 楼nicksololynn(霹雳游侠)回复于 2003-04-14 18:53:01 得分 0

那adoquery能提供分维吗?还要不要写代码实现分维。此外与Decision的一系列的表现还能很好的用吗?  
  我先试一下再说吧!有问题再给您留言吧。多谢了。Top

11 楼lyq(阿飞)回复于 2003-04-14 19:10:08 得分 0

ado发布简单,效率高Top

12 楼ralf1999(ralf1999)回复于 2003-04-14 21:22:22 得分 0

////一。有何种情况,BDE可以做,而ADO做不了?////  
  BDE有连接数限制,ADO没有.BDE非常灵活(可以更新视图),ADO与MTS集成的更好。  
  ////三。有哪位用过DELPHI7?它用的ADO支持ADO.NET吗?此个关于问题二中的情况解决了吗?////  
  答案是否定的。  
  ////四。ADO.net用的是不是就是ADO   2.7////  
  ADO.net不是ADO   2.7。  
  Top

13 楼nicksololynn(霹雳游侠)回复于 2003-04-15 21:52:55 得分 0

我昨天用   ADOConnection+adoquery+decisioncube试了一下,出了很多问题。一运行程序就死机,然后每次打开项目后,再打开那个窗体时,DELPHI就会自动关闭(尽管我已经把所有用到的datamodule都打开了。)Top

14 楼conchman(conchman)回复于 2003-04-16 00:47:46 得分 0

greenlotus(云水居士)     你好,  
  我也是刚刚学习此类编程,用你提供的方法做了,发现当SERVER和CLIENT在同一台机器上没有问题(SQL在其他机器上),但我把SERVER移到别的机器上时却不行了,现象是:在BORLAND   SOCKET   SERVER中可以看到已经登陆,但客户端无显示,调试客户端程序时发现,1。在为SOCKETCONNECTION选择SERVERNAME时很慢;2。无法CONNECT,尽管BORLAND   SOCKET   SERVER中可以看到已经登陆。  
  谢谢指教!!Top

15 楼greenlotus(云水居士)回复于 2003-04-16 12:55:14 得分 0

to   conchman(conchman)   :  
  你太客气,指教不敢当!!  
   
  我猜想,应用服务器(server)要在它所运行的机器上注册,另外,应用服务器要和数据库相连,所以,我们一般分发的是客户端(client)程序,我没有尝试过将应用服务器移到其他机器上的做法!  
   
  分发客户端的方法很简单,你只要把客户端的Exe文件复制到其他机器上,并且把midas.dll这个文件复制到客户端所在机器的..\\windows\system下即可,其他的什么设置都不需要。  
   
  当然如果你用的是TSocketconnection为连接控件,那么服务器端一定要运行...\\delphi\bin\scktsrvr.exe这个程序,客户端就不再需要了。Top

16 楼fansnaf(投币一元)回复于 2003-04-17 10:22:09 得分 0

gzTop

17 楼wbryfl(任远)回复于 2003-04-18 09:36:50 得分 0

TO   conchman(conchman)    
   
          你的服务器端应该选择2000系统。Top

相关问题

  • 急:Croba做三层结构不能使ado
  • 关于三层结构中使用ADO的问题(急)
  • 三层结构
  • 三层结构?
  • 三层结构
  • 讨论一下DELPHI连接数据库的发展方向是什么?BDE,ADO,DBEXPRESS还是三层结构的!
  • MIDAS+ADO的三层结构,服务器端全局变量为什么不会冲突?
  • 三层结构的问题
  • 三层结构是什么?
  • 初学三层结构

关键词

  • ado.net
  • tcp/ip
  • ado
  • 数据库
  • 应用服务器
  • 客户
  • delphi
  • 联接
  • 连接
  • 结构

得分解答快速导航

  • 帖主:nicksololynn

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo