主程序调用dll,dll一定要重新连接数据库吗?(100分)

  • 主题发起人 主题发起人 flyfast
  • 开始时间 开始时间
F

flyfast

Unregistered / Unconfirmed
GUEST, unregistred user!
能否利用主程序的已经连通的database,
而不用重新建立一个新的database(这耗费一定的时间)?
 
非也!除非你释放了数据库。
 
在DLL中重新连接DATABASE,不会化太多的时间的
如果你利用DLL,通过接口传送控件定义,耗用的
时间也不少。
 
应该重新连接,如果可以使用主程序的DATABASE,那么也会复杂点。
如果在DLL里使用数据库,要用个SESSION,其AUTONAME为TRUE,以保安全。
 
因为我的DLL很多(许多人的分立模块),每次调用如果要打开数据库。。。。
怎样使用主程序的DATABASE?
 
把主程序的database作为参数传递给dll即可, 我一直这样用的.
function DBfunction(ADb: TDatabase; AQr: TQuery): boolean; stdcall; export;

exports
DBfunction name 'DBFUNCTION';

.....
 
这个问题好像在本论坛的相关问题中已讨论得很清楚。
我目前正在做一个项目,正是由十几个DLL使用一个主程序中的DATABASE,
方法很简单:
只要你保证主程序的DATABASE的SESSIONNAME、DATABASENAME与被
调DLL的SESSIONNAME、DATABASENAME相同即可,当然你可用其它的
SESSION,若你不想使用主程序的SESSION的话,总之只要给定DLL中的
TABLE或QUERY的DATABASENAME与主程序相同即可,但这里有一个非常
重要的前提条件,就是你必须使用“COMPILE WITH LIBRARY”,否则会
发生运行时错误。
若你不想使用“COMPILE WITH LIBRARY”,则你必须在进入DLL时
做一些初始化工作,详细情况你还是先在本论坛相关的内容中找找吧,这
里就不多费唇舌了。
 
就到这吧,不过我还是没成功!只能重新连接数据库了!
 
后退
顶部