很久没有发布东东了,今天看到盒子上有朋友发布了个三层的东东,
下来大概看了看,貌似使用起来不太方便,曾经用过ASTA和RmoObject,都不是那么让人满意,BUG多,并且庞大需要安装,使用十分不方便。
为了继续支持我喜欢的DELPHI和可爱的盒子,
特发布个自己写的远程数据库对象希望能给大家平常的工作带来便利和高效(偶自己和同事们都用了挺长时间,十分稳定易用)。用DELPHI的朋友少不了要和数据库打交道,一般小程序都使用ACCESS做数据库感觉十分方便,不用装服务端,客户端不用单独装驱动,
发布程序时直接目录一拷贝就完事,但缺点是不方便从其它计算机对它进行访问,
有了偶这个东东,就可以很方便容易的实现咯。   ps : 就是连接Oracle和mysql,客户端也可以不用装驱动哦使用步骤
解压后找个地方存放
将GobUnit目录添加到delphi的搜索路径
将DXSockEnt30(我改过bug的版本)的3个子目录也添加到delphi的搜索路径
即可使用和编译所有偶提供的代码FAQ:
这个东东都提供什么功能?
答:提供最简单方便高效的方式,通过ADO对象实现远程数据库这个东东为什么不封装成控件?
答:本类以单元形式封装,只要加到搜索路径后直接引用即可,无需经过安装等麻烦的步骤。这个东东适合应用在什么场合?
答:适合应用于小型分布式程序。这个东东掌握起来有难度吗?
答:没有任何难度,就和你开发本地数据程序一样简单。这个东东可以应用在我已有的程序里吗?
答:由于我使用的是AdoQuery作为数据集载体,所以无需更改为其他控件,现有的本地数据库程序也可以非常容易的改造为支持分布式数据库。这个东东稳定吗?
答:经自己长期做小白鼠广泛的实际应用实践,发现方便,稳定。服务端的端口号是多少?
答:服务端的端口号可以随意设置,只要不和其他程序冲突就可以,并且客户端连接服务端时必须端口一致.如果服务端重启了客户端需要重启吗?
答:不用,客户端只要连接上服务端以后就有自动断线重连的功能。我在使用时要注意什么?
答:如果你要用ADOQuery对象的Insert,Post方法新增数据时,记得数据表的第1个字段须是唯一标示这个东东免费吗?
答:完全免费,并且开放所有源代码,你可以随意改进,传播它,当然如果更好用了,记得给我也发一份 :)(要保留偶的版权和注释信息哦)这个东东使用到了那些控件?
答:delphi的ADO控件,INDY,以及第3方Dxsock(服务端用)。
   同时发布的还有我自己积累的几个常用单元,有日志,调试,tcp的通用服务和客户端模块等,同样都是十分有用的东东。
   
这个东东有demo程序吗?
答:有最简单的示范程序,但时间关系只写了最简单的演示代码,还有很多值得你去挖掘的实用接口和单元。我有了改进版本,怎么联系这个东东的作者?
答:QQ 22900104 ,Email [email protected] 马敏钊发布这个东东的目的是什么?
答:好用的东东大家分享,共同学习,共同进步,希望大家都能发扬开源精神。构架说明:
大概是这样的,偶有一个服务器对象,负责提供数据库服务,在需要提供数据服务的程序里创建它即可。
使用起来十分简单
首先引用服务端单元  
uses UntRmodbSvr;
//创建远程服务对象 (参数1 服务端口号 日志对象,如果不需要记录日志请填nil)
    Gob_RmoDBsvr := TRmodbSvr.Create(FSvrPort, nil);
//连接数据库 可以是ADO支持的所有数据库 调用TDBMrg提供的获取各种数据库的链接字符串即可,这里连接Access数据库
    Gob_RmoDBsvr.ConnToDb(TDBMrg.GetAccessConnStr('cfg.mdb'));
到此为止,2行代码使你的这个程序具有了将数据库发布出去的能力,其它机器的程序可以方便的通过它访问到数据库,像使用本地数据库一样。客户端只需连接服务端即可,不管服务端是什么样的数据库,无需安装任何数据库驱动。
uses UntRemSql;
//创建客户端对象
 RmoClient := TRmoHelper.Create();
//连接服务端 填入服务端地址和端口(与服务端端口一致即可)
 Result := RmoClient.ReConnSvr(ISvrIP, Iport); 
2行代码使你的客户端程序具有了方便的访问到远端的数据库,像使用本地数据库一样,并且你原有的单机数据库程序可以很方便改为远程数据库。
具体使用方法可以查看DEMO程序
下载地址
   http://www.2ccc.com/article.asp?articleid=5307

解决方案 »

  1.   

    好东西,收藏下,但是有几个疑问。
    1、“通过ADO对象实现远程数据库”是什么意思
       连接远程数据库吗,三层中一般都是连接应用程序服务器,不需要连接远程数据库
    2、“客户端也可以不用装驱动”
       既然是连接远程服务器,客户端装驱动干什么?我想客户端只应该接收或者发送数据包吧。还是先下个看看究竟再说了。
      

  2.   

    怪我没说清楚,
    1.你可以在本机使用Adoquery对象来操作远程数据库,比如说
    Qry.Edit;
    ....
    Qry.Post;
    就是更新,我会帮你将更新内容写入到远程数据库。
    rmoClient.openTable('ttable',qry);
    Qry.insert;
    ....
    Qry.Post;
    就是插入,我会帮你将更新内容写入到远程数据库。
    你可以不用关心那些麻烦的SQL语句。
    2.就是你理解的方式,客户端可以不像直接用ADO连数据库那样还需要安装各种数据库驱动
      

  3.   

    严重支持开源控件!
    不过还是不知道LZ的控件是做什么的!
    ADOQuery操作远程数据库,直接用其封装的方法就可以,为啥还要...
      

  4.   

    呵呵 谢谢 加精;
    不用装驱动主要就是像表明用这个客户端,就不用像直接远程连数据库那样还要按照数据库驱动啊。
    如果用ADoquery直接连MySQL 或者oracle 不都得安装驱动程序么。
      

  5.   

    看来C++Builder也可以的, 谢谢, 收藏了
      

  6.   

    1 开源的很好
    2 DElphi没有用过
      

  7.   

    我在使用时要注意什么? 
    答:如果你要用ADOQuery对象的Insert,Post方法新增数据时,记得数据表的第1个字段须是唯一标示 
    從表通常是個組合的主鍵,怎麼辦呢?
      

  8.   

    谢谢支持~~
    现在还不能支持联合查询出来的数据集,使用Post方式自动提交。
    计划在下一版本中支持 :)
      

  9.   

    关于主从表的问题,可以这样来新增.
    //向主表添加记录
    Rmo.ReadyTable('Tmain',QryMain);
    QryMain.Insert;
    ...
    ...
    QryMain.Post;
    //向从表添加记录
    Rmo.ReadyTable('TSub',QrySub);
    QrySub.Insert;
    QrySub.FieldByname('FPID').asinteger:=QryMain.FieldBYname('ID').asinteger;
    ...
    QrySub.Post;可以用变通一点的方法来处理:)。至于华仔提出的:
       從表通常是個組合的主鍵,怎麼辦呢? 
    --------------------------------
    从表也可以设置一个自动增长的唯一字段。
      

  10.   


    我一般为每一个表都建立一个名为fid的自动递增字段
    从表也有自己的fid,还有主表的关联id:fMasterId只是,盒子需要注册、登录才能下载,有点可惜。。
    另外,服务端使用了dxSock,不知道有没有使用它的完成端口?记得它以前自称是效率比iis5/iis6都高不少,不知道是否真的如此。稳定性又如何。
    asta这样的框架,居然都还有bug,难怪delhpi写大应用比较不吃香。我自己也实现了一套通过isapi做“中转”的INI@HTTP机制,可以远程访问数据库,只是不能简单的edit/post,直接使用db控件只能查看不能修改
    http://blog.csdn.net/sz_haitao/archive/2009/05/15/4190602.aspx
      

  11.   

    我在使用时要注意什么? 
    答:如果你要用ADOQuery对象的Insert,Post方法新增数据时,记得数据表的第1个字段须是唯一标示 
    这条不好,象我这样的,一般表没什么关联不设置主键。。
      

  12.   

    支持先~
    delphi连接SQL数据库需要装驱动吗?
      

  13.   

    做了不少优化和完善工作,
    有兴趣的朋友请从svn上下载最新版本
    http://mmzrmo4delphi.googlecode.com/svn/trunk/ mmzrmo4delphi-read-only
      

  14.   

    http://www.2ccc.com/article.asp?articleid=5328
    这个是修改版的,貌似改进了一些东西。
      

  15.   

    到哪里找DXSOCK,特别是楼主的修改版?