我现在用mfc做的一个sdi程序,把视图分为2部分,左边是一排按钮。点击其中一个右边出现相应的页面。
现在我在其中一个视图的按钮控件的点击事件里打开本地Access库Demo.mdb。那么我想知道在其他视图里是不是也就打开了该数据库。
我的代码如下:
先在stdafx.h文件中加上#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF") 
接着在CMyApp中定义一个成员变量
          // 定义ADO连接变量指针
_ConnectionPtr m_pConnection;
在BOOL CMyApp::InitInstance()函数中添加下列代码:
// 初始化COM,创建ADO连接等操作
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
再在其中一个视图的按钮控件的点击事件里添加代码如下:
if(SUCCEEDED(m_pConnection.CreateInstance(__uuidof(Connection)   )))   
{   
       m_pConnection->CursorLocation=adUseClient; //游标类型   
      
}  
    try                 
{
// 打开本地Access库Demo.mdb
m_pConnection->Open(“”,"","",adModeUnknown);

}
catch(_com_error e)
{    AfxMessageBox("数据库连接失败,确认数据库是否在当前路径下!");

} 希望大家指教

解决方案 »

  1.   

    当然,其他视图也可以用m_pConnection这个指针了,这有疑问??
      

  2.   

    App类相当于全局的,因为在其.h文件最下面有一句extern C***App theApp; 其定义是放在.cpp中的。这意味着在各个引用了该.h的其它文件中,都可以直接使用theApp.m_pConnection来访问该数据库。
      

  3.   

    我的意思是在其他视图里是不是也要加下面的代码:(也需要用到数据库里的数据)
    再在其中一个视图的按钮控件的点击事件里添加代码如下: 
    if(SUCCEEDED(m_pConnection.CreateInstance(__uuidof(Connection)  )))  
    {  
          m_pConnection->CursorLocation=adUseClient; //游标类型  
          
    }  
        try                

    // 打开本地Access库Demo.mdb 
    m_pConnection->Open(“”,"","",adModeUnknown); } 
    catch(_com_error e) 
    {  AfxMessageBox("数据库连接失败,确认数据库是否在当前路径下!"); } 
      

  4.   

    这些代码不该加在BOOL CMyApp::InitInstance()里面。
    你对文档-视图模型一无所知。
    文档视图模型,专门为了你的问题而设。
    打开数据库的任务交给文档,其他所有视图都可以访问文档。
      

  5.   

    打开一个数据库实例与界面如何布局完全没有关系,如果要在你的程序空间共享同一个实例,在APP中打开,或是全局打开,或是想办法传递指针。
      

  6.   

    What you want on earth?
    严格说,不是,如果你的实例定义在某个VIEW中。
      

  7.   

    我开始是在BOOL CMyApp::InitInstance()函数中添加下列代码: 
    // 初始化COM,创建ADO连接等操作 
    AfxOleInit(); 
    m_pConnection.CreateInstance(__uuidof(Connection));