一个c/s两层结构的系统,采用vc。系统中中有多个模块,都单独开发成动态链接库,每个模块中都有数据库的连接和数据访问。数据库访问使用ado技术。如果每个模块内都单独利用ado直接访问数据库,则会造成多次数据库连接,这样从权限控制上和效率上以及逻辑结构上也不好。如果将利用ado访问数据库的操作用一个单独的dll封装,其他模块通过此dll的模块句柄从而利用和共享此模块的数据访问功能,这样看起来会好些。先前这个共享数据访问模块用com做,但是可能因为ado智能指针在传递给其他模块时就析够了,所以没有实现(为什么不能实现?)。
问,如果用普通的动态连接库封装ado操作,所有模块共享此模块能否实现?您做c/s两层结构的系统,对于数据访问共享都是如何实现的?

解决方案 »

  1.   

    “c/s两层结构”?是指Client/Server吗?这个与使用数据据有什么关系呢?如果是在多个模块中使用同一个数据,可以设计一个数据库类,定义成全局成员,这样不就可以让每一个模块都使用了吗?如是你说的多个模块是指多线程,那就很麻烦了!
      

  2.   

    各个模块封装在不同的动态连接库里,如果在每个模块中都用ado连接数据库,再访问必然是很不好了,如果把数据库访问部分提取出来,用一个动态链接库实现,其他模块能共享这个模块吗?ado是智能指针,能被传递吗?不是多线程问题