顺便说一下,#import 已经加载了!!

解决方案 »

  1.   

    hr=m_pCatalog.CreateInstance(__uuidof(ADOX::Catalog)); 
      

  2.   

    vc下动态创建access数据库的实现
    http://blog.csdn.net/World7th/archive/2007/06/02/1635297.aspx
      

  3.   

    http://msdn2.microsoft.com/en-us/library/ms675314.aspx
      

  4.   

    回复大毛::
    你说的我做了还是有错误!现在我又再次调试了一遍!最后缩小了范围!见代码
    _ConnectionPtr m_pConnection;
    _RecordsetPtr m_pRs;
    _variant_t vFieldValue;
     CString strFieldValue;
       
         HRESULT hr = S_OK;  
        CString strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source = d:\\new.mdb"));
        try
        {


       ADOX::_CatalogPtr m_pCatalog = NULL;
           hr=m_pCatalog.CreateInstance(__uuidof(ADOX::Catalog));
         if(FAILED(hr))
     {
      AfxMessageBox("DF");
              _com_issue_error(hr);
     }
     else
     {
         m_pCatalog->Create(_bstr_t(strcnn)); //Create MDB }
         }
        catch(_com_error &e)
        {
        // Notify the user of errors if any.
        AfxMessageBox(_T("error"));
         }
    其余部分我都给注释掉了,发现程序抛出异常,先提示对话框显示“DF”,然后显示error!应该是hr=m_pCatalog.CreateInstance(__uuidof(ADOX::Catalog));这句没有成功!可是该怎样改呢????大家帮帮忙啊!谢谢了
      

  5.   

    _bstr_t strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source=d:\\new.mdb")); 
    try 

    ADOX::_CatalogPtr m_pCatalog;
    hr=m_pCatalog.CreateInstance(__uuidof(ADOX::Catalog));
    if(FAILED(hr))
    {
    _com_issue_error(hr);
    }
    else
    {
    m_pCatalog->Create(strcnn); //Create MDB 
    }
    }
    catch(_com_error &e)
    {
    // Notify the user of errors if any. 
    AfxMessageBox(_T("error")); 
    }  //创建一个连接对象打开刚刚建立的mdb文件  m_pConnection.CreateInstance(__uuidof(Connection)); 
    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\new.mdb;", "", "", adConnectUnspecified);  
    //创建表 
    m_pRs.CreateInstance(__uuidof(Recordset)); 
    m_pConnection->Execute("CREATE  TABLE   users(id  int   primary   key,  name  text)",0,1);  //创建表new   
    m_pRs->Open("select * from users",m_pConnection.GetInterfacePtr(), adOpenDynamic,adLockOptimistic,adCmdText); 
    if(VARIANT_FALSE==m_pRs->adoEOF) { 
    vFieldValue=m_pRs->GetCollect("id"); 
    strFieldValue=(char*)_bstr_t(vFieldValue); 
    vFieldValue.Clear(); 
    vFieldValue=m_pRs->GetCollect("name"); 
    strFieldValue=(char*)_bstr_t(vFieldValue); 
    vFieldValue.Clear();  } 
    UpdateData(FALSE);  m_pRs->Close();     
    m_pConnection->Close(); 可以了
      

  6.   

    -_-!你粘过去试, 有改动
    m_pConnection.CreateInstance(__uuidof(Recordset)); //错,改为下句
    --------------------------------------------------------
       m_pRs.CreateInstance(__uuidof(Recordset)); 你m_pConnection- >Open 用了两次,前面一次去掉
      

  7.   

    你只是把AfxMessageBox("DF"); 给去掉了,但是它还是报error的错啊!最后对话框界面虽然出来了,但是一电击确定键或者右上角的关闭又提示Microsoft Visual c++ debug  debug assertion failed ---------下面一堆话!!
    着到底怎么回事啊???
      

  8.   

    你如果不把AfxMessageBox("DF"); 去掉,它还是对提示抱错,显示DF的啊!!这说明hr=m_pCatalog.CreateInstance(__uuidof(ADOX::Catalog)); 这部分是有毛病的!!没有创建实例成功!!你说呢??该怎样修改呢??
      

  9.   

    -_-!!!!!!你到底粘过去试没有?把你那段全删了(你的原来的)
    AfxMessageBox("DF");
    捕捉的是: if(FALSE(m_pConnection.CreateInstance("ADODB.Connection")))  
    的错误
    而你这句用重了,
    重了不止一次
    m_pConnection.CreateInstance   你用了5次
    m_pConnection.Open             你用了两次
    拜托你仔细点
      

  10.   

    真的很抱歉!!我这次把你的代码放了进去!全部改了!可是还是报错!!!报error的错,然后显示个提示框:
    Microsoft Visual c++ Runtime Library!---
    Runtime Error!! 
    Program:xxxxxx(此处为可执行文件路径) 
    This application has requested the Runtime to terminate it in an unusual way.please contact the application 's support team for more information.
    我于是就在
    catch(_com_error &e)
        {
            // Notify the user of errors if any. 
            AfxMessageBox(_T("error")); 
        } 
    里面加了个AfxMessageBox("DF");!!果然在报error前面提示DB两个字母,应该是com组建没有成功,或许是我的电脑有毛病吗??在我机子上不行!可是我昨天去请教一位学长,他的电脑也是报这个错误!!
    我是已经在stdafx.h文件里加过了#pragma warning (disable: 4146)
    #import "C:\Program Files\Common Files\System\ado\msadox.dll"
    #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "EndOfFile")
    #import "C:\Program Files\Common Files\System\ado\msjro.dll"
    #pragma warning (default: 4146)
    而且在instance()函数里放置了::AfxOleInit();
    就这么多了,这就是我全部所有的代码了,我的创建动态连接库的代码是放在C**Dlg::OnInitDialog()里的!没了!!
    顺便说一句!我已经抓狂了!!大毛麻烦你再帮我看看把!麻烦你了!!
      

  11.   

    void Ctest1Dlg::OnBnClickedButton1()
    {
    ::CoInitialize(NULL); 
    _ConnectionPtr   m_pConnection; 
    _RecordsetPtr m_pRs; 
    _variant_t vFieldValue; 
    CString strFieldValue;  HRESULT hr = S_OK; 
    _bstr_t strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source=d:\\new.mdb")); 
    try 

    ADOX::_CatalogPtr m_pCatalog;
    hr=m_pCatalog.CreateInstance(__uuidof(ADOX::Catalog));
    if(FAILED(hr))
    {
    _com_issue_error(hr);
    }
    else
    {
    m_pCatalog->Create(strcnn); //Create MDB 
    }
    }
    catch(_com_error &e)
    {
    // Notify the user of errors if any. 
    AfxMessageBox(_T("error")); 
    }  //创建一个连接对象打开刚刚建立的mdb文件  m_pConnection.CreateInstance(__uuidof(Connection)); 
    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\new.mdb;", "", "", adConnectUnspecified);  
    //创建表 
    m_pRs.CreateInstance(__uuidof(Recordset)); 
    m_pConnection->Execute("CREATE  TABLE   users(id  int   primary   key,  name  text)",0,1);  //创建表new   
    m_pRs->Open("select * from users",m_pConnection.GetInterfacePtr(), adOpenDynamic,adLockOptimistic,adCmdText); 
    if(VARIANT_FALSE==m_pRs->adoEOF) { 
    vFieldValue=m_pRs->GetCollect("id"); 
    strFieldValue=(char*)_bstr_t(vFieldValue); 
    vFieldValue.Clear(); 
    vFieldValue=m_pRs->GetCollect("name"); 
    strFieldValue=(char*)_bstr_t(vFieldValue); 
    vFieldValue.Clear();  } 
    UpdateData(FALSE);  m_pRs->Close();     
    m_pConnection->Close(); 
    ::CoUninitialize();
    }
    //---------------------------
    //STDAFX.H#import "d:\program files\common files\system\ado\msado15.dll" \
    no_namespace \
    rename ("EOF", "adoEOF")       #import "d:\Program Files\Common Files\System\ADO\msadox.dll"这是我试的代码,VS2003,你试下,如果不行,你可以发给我(如果不涉及保密的话)[email protected] 或QQ 286569729
    ----------------
    送佛送到西
      

  12.   

    d:\new.mdb,这个文件你确定下,如果已经有了,要在试之前删除它