最近写了一个用主程序调用DLL来进行数据库操作的程序。在主程序中用datebase连接数据库,在dll中用query控件连接主程序中已经连接上的数据库即将query控件的
datebasename设置为主程序中的数据库别名。有时能够自动连接上数据库,但有时却
出现数据库登录提示框,请问一下要整样才能让DLL中的query自动连接上主程序中
已经连接上的数据库而不出现数据库登录提示框?

解决方案 »

  1.   

    我的意思是在DLL中不用database,而使用主程序中的数据库连接。我试过一些dll是可以的
    但有些dll中的query不能,不知道是为什么?
      

  2.   

    我也不太搞的懂,我的是有的时候能够执行正常,有的时候会莫名其妙的出错,DLL 中创建的时候传入调用程序的Application,根据此由Components数组可以访问到调用程序中的控件,但是我操作的时候,经常会出莫名其妙的错误,我想可能是DLL和主程序不执行在同一个进程中,进程间互操作数据有问题
      

  3.   

    1、传入Database实例的指针
    2、动态赋给各数据集即可
      

  4.   

    我觉的,将Tdatabase放在DLL中比放在DLL外好
    该DLL可以如下实现(伪码)全局变量 
      Database:TDatabase;
      IsDatabaseConnected:Boolean;dllexport function OpenDatabase(aAliaseName:pchar;
                          aUserName:pchar;
                          aPassword:pchar):integer;
    {
      if IsDatabaseConnected then
        return 1
      else
        Database:=根据传入的参数来生成Database
        ...
    }