我是菜鳥,最近想要對現有的系統作點改善,現有一個核心的問題在於:主程序和DLL如何共用同一個Session連接到Oracle數據庫(這套系統用戶很多,因而Session數量控制是極有必要的)。作過很多嘗試,只有傳遞TQuery成功過,但這個方法太死,滿足不了復雜的數據庫操作,而傳遞Tdatabase或Tsession則會報錯。也考慮過傳遞主程序中的函數,但測試時發現返回Pchar是可以的,返回Tdataset則不行,不知道是否有大蝦作過這方面的研究,還請不吝賜教!

解决方案 »

  1.   

    方法一、纯粹的三层架构,由中间层负责数据库的连接和操作,同时可以建立个连接池。方法二、EXE+BPL+DLL这种类似中间层的方式,BPL为共享部分,这是在网上见到的一个例子,很有实用性。
      

  2.   

    穿送Tsession会出错,查一下,
    以前用MSSQL的时候,就是主程序只连接一次,
    然后把connection传个dll里面的mdi窗口,怎么换成ORACLE就不行了
      

  3.   

    delphi连接oracle最好的控件是用ODAC
    ADO ,BDE对oracle都有些BUG
      

  4.   


    BDE和ODAC傳遞的方法都試過,已確認不可行。ADO連接的速度和效率不如人意,已放棄。
    因為是菜鳥,對三層架構的概念有點生,可否給些更詳細的提示,多謝了。
      

  5.   


    我开发进销存时,采用的是: EXE+DLL+BPL  数据库连接放在BPL共享
      

  6.   

    oracle必须要用第一个方法的,难道你要每个用户都装ORACLE客户端?
      

  7.   

    如果楼主想用三层架构,可以看看李维的《Delhpi 5.X分布式多层应用系统篇》,这本书写得很详细