ADOX动态创建access数据库

发布时间:2014-10-25 2:23:07
来源:分享查询网

 #include "stdafx.h" void CreateData(){   /* CString szPath; CString szFile; ::GetModuleFileName(NULL,szPath.GetBufferSetLength(MAX_PATH),MAX_PATH); int nPos;    nPos = szPath.ReverseFind('//'); szPath = szPath.Left(nPos); szFile = szPath + _T("//bookdata.accdb"); CString szConnection; szConnection.Format(_T("Provider=Microsoft.ACE.OLEDB.12.0!DataSource=%s!PersistSecurityInfo=False!!"),szFile); int nLen; nLen = szConnection.GetLength(); for(int i =0;i<nLen;i++) {  if (szConnection.GetAt(i) == '!')   szConnection.SetAt(i,'/0'); } CoInitialize(NULL); HRESULT hr = S_OK;     try     {         ADOX::_CatalogPtr m_pCatalog = NULL;         hr = m_pCatalog.CreateInstance(__uuidof (ADOX::Catalog));         if(FAILED(hr))         {             _com_issue_error(hr);         }         else         {             m_pCatalog->Create((_bstr_t)szConnection); //这里的路径可以自己随意创建 ,我简单的填写了一下c://test.mdb    AfxMessageBox(_T("创建数据库成功"));        }     }      catch(_com_error &e)     {   AfxMessageBox(_T("失败"));     }*/            //CoInitialize(NULL);        ADOX::_CatalogPtr m_pCatalog = NULL;     //CString   strConnection,strTable;     //TCHAR   chFilePath[MAX_PATH];     /*      GetModuleFileName(NULL,chFilePath,MAX_PATH);     (_tcsrchr(chFilePath, '//'))[1]   =   0;     lstrcat(chFilePath,_T("Test.mdb"));         strTable = chFilePath;         strConnection =_T("Provider=Microsoft.JET.OLEDB.4.0;Data source=")+strTable+_T(";Jet OLEDB:Engine Type=5;");    */ CString strConnection,strPath,strFile; GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);strPath.ReleaseBuffer();int nPos;nPos = strPath.ReverseFind('//');strPath = strPath.Left(nPos);//strFile = strPath+ _T("//bookdata.mdb");strFile = strPath+_T("//bookdata.accdb"); //strConnection = _T("Provider=Microsoft.JET.OLEDB.4.0;Data source=")+strFile+_T(";Jet OLEDB:Engine Type=5;");//strConnection.Format(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source=%s;Jet OLEDB:Engine Type=5;"),strFile);strConnection.Format(_T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Jet OLEDB:Database Password=bingtiang;"),strFile);     // if(!PathFileExists(chFilePath))    // {     try     {      m_pCatalog.CreateInstance(__uuidof(ADOX::Catalog));     m_pCatalog->Create(_bstr_t(strConnection));     }     catch(...)     {     m_pCatalog->Release();     m_pCatalog   =   NULL;     AfxMessageBox(_T("失败"));  }   AfxMessageBox(_T("成功"));  //m_pCatalog->Release();   //这个语句不注释掉,会有内存读取错误,估计是重复释放同一个内存的问题      // m_pCatalog->Release();     // m_pCatalog   =   NULL;   //  }        // CoUninitialize(); }    

返回顶部
查看电脑版