CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  数据库及相关技术

如何在三层结构的应用中在网络间传递记录集? 需要原理和代码。

楼主jingsg0(舞为鹤)2003-12-01 11:43:14 在 C++ Builder / 数据库及相关技术 提问

请给完整的代码,简单就可以,但是要能说明问题。 问题点数:60、回复次数:20Top

1 楼astroboy()回复于 2003-12-01 11:45:35 得分 0

什么意思?就是返回记录集?Top

2 楼jingsg0(舞为鹤)回复于 2003-12-01 11:49:58 得分 0

我要能象在本地一样使用记录集,来实现增、删、查、改,要能更新,能做到吗?请给具体的代码!Top

3 楼online(龙卷风V4.0--决战江湖(MS MVP-VB))回复于 2003-12-01 11:52:12 得分 10

http://www.ourfly.com/bbs/dispbbs.asp?boardID=5&ID=71  
   
  这篇不行吗???  
   
  其实和本地的没有什么区别  
   
  定义成函数或者过程即可  
  Top

4 楼jingsg0(舞为鹤)回复于 2003-12-01 12:14:47 得分 0

这篇文章我有的,但是没有讲能不能在网络之间传数据集,我要做的就是给远程的组件传个sql语句,需要返回一个数据集,但是我试了很多此都没有成功。有个精通delphi的朋友说这样的功能是vb做不到的:能传字符串,但是不能传记录集。Top

5 楼jingsg0(舞为鹤)回复于 2003-12-01 12:41:23 得分 0

upTop

6 楼davidlv(断刀客)回复于 2003-12-01 13:29:09 得分 10

可以做到的  
  写一个DLL(也就是类啦,但是放在服务端的),如下原理  
   
  '定义外部接口,用于接收外部传进来的SQL语句  
   
  private   mSql   as   string  
   
  public   property   let   SqlString   (byval   v   as   string)  
          mSql=v  
  end   property    
   
  '定义一个外部接口,传回得到的结果合集  
  public   function   GetRst   as   adodb.recordset  
        dim   rst   as   adodb.recordset  
   
        '在这里写入一些代码,调用msql这个外部  
        '传进来的Sql语句,去得到相应的结果集  
         
        set   getrst=rst       '将得到的结果集赋给函数,这样外部就得到了  
   
  end   functionTop

7 楼davidlv(断刀客)回复于 2003-12-01 13:30:46 得分 0

客户端调用这个类时,要用createobject()来建立对象,即set   nObject=createobject("类名",服务器名)Top

8 楼online(龙卷风V4.0--决战江湖(MS MVP-VB))回复于 2003-12-01 13:31:07 得分 0

我要做的就是给远程的组件传个sql语句,需要返回一个数据集  
   
  public   testrs(strsql   as   string)   as   adodb.recordset  
  dim   rs   as   new   adodb.recordset  
  rs.open   strsql  
  set   testrs=rs  
  end   sub  
   
  代码仅仅是举例而已,  
  绝对没有问题Top

9 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-12-03 12:35:27 得分 0

同意楼上2位Top

10 楼Rick110AAA(海牛猪猪 And HerosⅢ之比蒙)回复于 2003-12-03 13:57:36 得分 0

学习啦~~~Top

11 楼kimurakenshin(浪客)回复于 2003-12-03 14:14:28 得分 0

UP   UP   关注.........Top

12 楼jingsg0(舞为鹤)回复于 2003-12-03 15:16:51 得分 0

to   回复人:online(龙卷风(白学了,重新充电中))    
  你说的方法是可以,但是有个缺点,因为我每次用到记录集的时候都要调用组件层的函数类重新构件新的记录集,速度很慢。我试过用属性来返回,但是又不能实现修改和更新、删除等。   有没有好的解决办法?   今天结贴!Top

13 楼online(龙卷风V4.0--决战江湖(MS MVP-VB))回复于 2003-12-03 15:51:30 得分 0

我试过用属性来返回,但是又不能实现修改和更新、删除等  
  能举个例子吗?  
   
  Top

14 楼Apple200228(Apple)回复于 2003-12-03 16:21:50 得分 0

关注!学习!Top

15 楼davidlv(断刀客)回复于 2003-12-03 16:45:33 得分 10

有点不清楚楼主的意思,如果只要返回一个记录集,用属性或方法均可,且这个是在服务端做的,客户端不会觉得慢。如果你想给服务端一个SQL让它去更新数据表,也可以用这个方法呀,让DLL   public   一个方法接收SQL语句字符串,可一个public   property   也可以呀,在服务端上(也就是DLL)去做就是了,不知道你想要的是不是这个意思。  
  我的MSN:yongliang_lv@msn.comTop

16 楼jingsg0(舞为鹤)回复于 2003-12-03 17:45:53 得分 0

dll代码:  
  Private   mSqlString   As   String  
  Private   rs   As   New   ADODB.Recordset  
  Private   connectString   As   String  
  Public   Property   Get   gStrSqlstring()   As   Variant  
          gStrSqlstring   =   mSqlString  
  End   Property  
   
  Public   Property   Let   gStrSqlstring(ByVal   vNewValue   As   Variant)  
            mSqlString   =   vNewValue  
  End   Property  
   
   
  Public   Function   ExecuteSql()  
   
          connectString   =   "Provider=SQLOLEDB.1;Persist   Security   Info=False;User   ID=sa;Initial   Catalog=Pubs;Data   Source=(local)"  
  On   Error   GoTo   errh:  
          If   rs.State   =   0   Then  
                  rs.Close  
          End   If  
          rs.Open   mSqlString,   connectString,   adOpenDynamic,   adLockOptimistic,   0  
           
          'Set   rs   =   Nothing  
          Exit   Function  
  errh:  
          Set   rs   =   Nothing  
          Set   ExecuteSql   =   Nothing  
  End   Function  
   
  Public   Property   Get   gRecordset()   As   Variant  
          Set   gRecordset   =   rs  
  End   Property  
   
   
   
  Public   Property   Get   gStrConnectionString()   As   String  
          gStrConnectionString   =   connectString  
  End   Property  
   
  Public   Property   Let   gStrConnectionString(ByVal   vNewValue   As   String)  
          connectString   =   vNewValue  
  End   Property  
   
   
  客户界面:  
          Set   OX   =   CreateObject("qqq.test",   "192.168.2.89")   '组件的引用是没有问题的  
          strConnecting   =   Text1.Text  
          OX.gStrSqlstring   =   strConnecting  
          OX.gStrConnectionString   =   strCnn  
          Call   OX.ExecuteSql     ’现在也可以的  
          with   OX.gRecordset  
                .fields(0)="1234"     '出错,说‘该对象不支持此属性或方法’,如果用来返回记录集是可以更新的,但是要多次访问服务器来取得记录集,很费时。   怎么办??  
                .update        
   
          End   With  
   
   
  Top

17 楼jingsg0(舞为鹤)回复于 2003-12-03 17:50:04 得分 0

写掉了   :   “如果用ExecuteSql()来返回记录集是可以更新的”。Top

18 楼maskzha(MaskZha)回复于 2003-12-03 18:14:41 得分 0

用方法可以更新吧?Top

19 楼jingsg0(舞为鹤)回复于 2003-12-03 18:18:32 得分 0

是的。   你有什么高见?快,我要下班了Top

20 楼davidlv(断刀客)回复于 2003-12-05 10:34:29 得分 30

楼主,你把从服务端得到的记录想在本地直接修改是有问题的,三层结构的写法是服务端将获得的记录交给一个对象中的属性(如collection或object),客户端从这个属中获得相应的值,再将值赋给这个属性,并操作对象中的一个方法来完成对数据表的修改。  
   
  我写的三层就是这样的,客户端非常简单,几乎没有什么代码的。  
  我的MSN:yongliang_lv@msn.comTop

相关问题

  • 求树型结构原理或代码
  • 急 求原理或者代码!
  • 求一个循环记录的代码
  • <<编译原理及实践>>比<<编译原理>>好?哪里有<<编译原理及实践>>源代码?
  • 谁有求职信的源代码?原理也可以。!
  • 关于.ini的使用!原理,代码,示例,全都可以!!
  • 请问下面这段代码的原理是什么?
  • 求FILEMON的实现原理和源代码
  • 请教这个算法的原理,但代码很简单?
  • 高分换源代码,单片机原理

关键词

  • 代码
  • 语句
  • 属性
  • 函数
  • 组件
  • 修改
  • 客户
  • 数据
  • 记录
  • propertypublic

得分解答快速导航

  • 帖主:jingsg0
  • online
  • davidlv
  • davidlv
  • davidlv

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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