由于开发的系统较大,又几个人共同完成,所以各个业务模块以dll完成,但访问的只有一个数据库。我在主exe中已经配置好了adoconnection的连接。那么最好

  • 主题发起人 主题发起人 shangshang
  • 开始时间 开始时间
主程序的ADOConnection
完全可以作为一个参数传给DLL
 
可以的。
我的做法是将ADO的连接和公用的数据处理部分放在一个DLL模块中,主程序及其它DLL模块
通过传递TADOQUERY等参数来实现的,当然我程序全部用DELPHI来做的,在实际应用中没发现
什么问题。对于其它语言我没试过。
例如我的调用函数:
function DataOpenSql(sqlstr:pchar):TADOQuery;far;external 'zgmdatalog.dll';
function DataExecSql(sqlstr:pchar):WordBool;far;external 'zgmdatalog.dll';
function DataGetValue(GetValueString:pchar):Pchar;external 'zgmdatalog.dll';
function DataConnect(database,username,password:pchar;logform,
DefaultConnect:Boolean):WordBool;far;external 'zgmdatalog.dll';
 
主程序的ADOConnection
完全可以作为一个参数传给DLL,下面是调用的过程类型定义:
TShowDll = procedure(Application:TApplication;AppADOConnection:TADOConnection);
 
不考虑其它语言调用,直接传送TADOConnection是最简单的,没有任何问题。
 
build a param list for every dll, db connection use dword type,
like, dbconn = dword(FSession);
 
多谢大家
 
多人接受答案了。
 
后退
顶部