我在一个对话框的  初始化中  导入数据库,部分代码如下:
CDialog::OnInitDialog();

_ConnectionPtr m_pConnection=NULL;
CoInitialize(NULL);
HRESULT hr;
try 

hr =  m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr)) 

hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",-1);}
=======================================
在该对话框里,我给编辑框导入文件调用了
CString FilePathName;
CFileDialog dlg(true,NULL,NULL,NULL,"(*.txt)");///TRUE为OPEN对话框,FALSE为SAVE AS对话框
if(dlg.DoModal()==IDOK)
FilePathName=dlg.GetPathName();======================================
关闭该对话框再次domodal打开次对话框,数据库就报错了,说连接失败
问题是,只要我调用以上读入文件的代码,重新打开对话框,初始化时红色那句话就报错,这是什么问题啊?
不调用以上读入文件代码就不会错可能什么原因导致的呢?

解决方案 »

  1.   

    CSDN有没有高手解决这个问题啊?
      

  2.   

     关闭连接状态了没?
    if(m_pConn->State)
    m_pConn->Close();
    m_pConn.Release();
      

  3.   

    我已经解决了
    FileDialog时改变了当前路径所致!!!  //   以下是你的代码片段 
    CFileDialog   dia(TRUE); 
    dia.DoModal();     //   这行去掉,是多余的 
    if(dia.DoModal()==IDOK) char   szCurDir[MAX_PATH];   //   增加一个变量 //放在DoModal之前,保存当前目录 
    GetCurrentDirectory(MAX_PATH,szCurDir);   //放在MyDB-> Open(...)之前,恢复当前目录 
    SetCurrentDirectory(szCurDir); 
      

  4.   

    GetCurrentDirectory 不要用这个函数,而应该用GetModuleFileName