大家好!
     我用DELPHI开发了一个系统,系统中的每个子模块都编译成EXE程序,如何可以实现多个EXE程序能共享同一个ADOConnection数据库连接,这样便可以提高连接数据库的效率.现在是每启动一个Exe程序,便要连接一次数据库.

解决方案 »

  1.   

    貌似没有什么好办法。每个Exe用一个其实也不是很浪费,系统有一些东西会自动管理的,比如说效率之类的东西。
      

  2.   

    把ADOConnection放在DLL中, 返回_ADOConnection接口共用.
      

  3.   

    cncharles(旺仔) :你好!不知道是否能贴一段代码看看.
      

  4.   

    不是吧,调用同一个DLL就可以共享数据?
      

  5.   

    不同的应用程序调用同一个DLL,它们只是共享了代码段,数据段在每个应用程序中是独立的。
      

  6.   

    你共用同一个ADOConnection效率更低啦
    你想一下你每个EXE上的每个控件都没有ADOConnection,窗体创建完了你再循环每个控件,然后把ADOConnection赋值给这些控件
      

  7.   

    把对数据库的操作都放在一个模块,做成一个进程外COM,那就OK了(三层)
      

  8.   

    TO:wzwcn(牛): 我觉得大哥说的有道理,不知道是否可以贴一段原代码.谢谢!
      

  9.   

    这需要用到包的功能,这就体现出包的好处了。可以让多个exe共用一个包,在这个包中建一个数据窗体,然后每个exe都调用这个包中的ADOConnection就可以了
      

  10.   

    冷水一盆: 为什么会觉得这样共享数据库连接会提供效率呢?共享数据库连接思路确实不错,对于一个软件系统,多模块从代码与运行角度来看统一管理数据库连接是有益的.但楼主情况有点特别,关键在楼主各模块各自是EXE,也就是各自跑各自的进程.
    因为跨进程的效率可远远高于进程内调用(数量级的差别),如果是仅仅把数据库连接从各自模块中抽取出来,跨进程的访问,因为这种跨进程接口是数据密集型接口,这样效率很可能不高反低.想提高效率,我想可以两种思路:
    一,DELPHI做多层的MIS,早有成熟便捷的技术,把软件作这样的改造,而不要把思路仅仅放在数据库连接上.二,第二种方法稍容易些,EXE模块全部改为BPL或DLL方式的模块,这时再考虑共享ADOCONNECTION.但话又说回来了,项目需求真的是需要提高效率吗?要的效率到底是什么呢?从提高系统稳定性与可靠性,而不是所谓效率出发,我是强烈支持楼上多位朋友说的方法.