程序中多个窗口共用一个Connection连接的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 15:38:49
本人刚学MFC不久,遇到以下问题,特向高手求教。
在一个多文档程序中,多个窗口需要用到一个连接。我采用的办法是,新建一个公共的类CPublic,在CPublic中定义一个Connection对象,并在构造函数中建立连接。然后在需要这个连接的窗口类中引入CPublic的头文件,然后在窗口类中创建CPublic的实例,通过使用这个实例的成员变量的方法来使用这个连接。
这样做的话我就有疑问了:如果同时打开多个窗口,在每个用到连接的窗口中创建一个CPublic的实例,这样会不会就同时建立了多个同样的连接?如果所连接的数据库比较小,占用资源比较少,还看不出什么问题。如果每个连接占用的资源比较多,这样就会浪费太多资源了。
如何让多个窗口共用一个连接呢?
我在CSDN中也发了这个帖子,有网友给的建议是把我的CPublic类中的Conncetion声明为static的。
我觉得这方法不错,是我这个程序最简单有效的修改。不过我一开始的时候忘记了static成员应该在类外初始化,导致出错,希望其他朋友不要犯我这样的错误。
SOFT96 朋友的建议也不错,至少理论上是对的,不过讲的太高深了,我实在不知道该怎么去做。

你可以给theApp中建立一个类的对象作为theApp的成员.那么这个对象就是全局的了.然后你就设计这个类用来连接数据库无论你在哪个窗体调用.都是theApp.对象名.连接函数名.你要修改连接时,只需要修改类的成员函数.而不用每个用到连接的地方都修改,从来实现了代码的重用性.
在实现连接的函数中.最好判断下.如果你的连接是打开状态,就先关闭连接再进行连接.不知道是不是你要的.

在主窗体声明这个公共类的对象
然后打开其他子窗体的时候把这个对象的指针传进去,这样,子窗体也是访问的主窗体里创建的连接了。

确实一个程序创建多个连接不好,除非你同时多线程访问数据库,就需要每个线程一个连接