如题。如果用户没有装office软件,还能创建access文件吗

解决方案 »

  1.   

    只要装了Jet引擎就可以创建Access文件,跟Office没必然关系。在我看来,Office Access是数据库Jet的GUI界面,呵呵。代码如下:BOOL CDBFile::CreateDBFile(CString filePath, CString fileName){ BOOL bRet = TRUE; HRESULT hr = S_OK; m_strConn = ACCESS_CONNECTION_STRING + filePath + fileName; try { ADOX::_CatalogPtr pCatalog = NULL; hr = pCatalog.CreateInstance(__uuidof(ADOX::Catalog)); if(FAILED(hr)) { _com_issue_error(hr); bRet = FALSE; } else { pCatalog->Create(_bstr_t(m_strConn)); } } catch(_com_error &e) { AfxMessageBox(e.ErrorMessage()); bRet = FALSE; } // 创建数据表 if (bRet) bRet = CreateTable(); // 修改数据库文件访问密码 if (bRet) bRet = AlterDBFilePassword(CDBCom::Password); return bRet;}
      

  2.   

    #define ACCESS_CONNECTION_STRING _T("Provider=Microsoft.JET.OLEDB.4.0;Data source=")
      

  3.   

    // Support for ADO ( COM Library Initialization)#ifndef _CADOACCESSDB_IMPORT_LIBRATY_#define _CADOACCESSDB_IMPORT_LIBRATY_ #import "c:\Program Files\Common Files\system\ado\msadox.dll" #import "c:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") #pragma warning (default: 4146)#endif // _CADOACCESSDB_IMPORT_LIBRATY_
      

  4.   

    #import   "c:\Program   Files\Common   Files\system\ado\msadox.dll"   rename_namespace("ADOX")     
      #import   "c:\Program   Files\Common   Files\System\ADO\msado15.dll"     rename_namespace("ADO")   rename("EOF",   "EndOfFile")   
      #pragma   warning   (disable:   4146)   
      #include   "icrsint.h"   
      #include   "Shlwapi.h"   
      #pragma   comment(lib,"Shlwapi.lib")   
        
        
      ............................   
        
      CoInitialize(NULL);   
        
      using   namespace   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;");   
        
      if(!PathFileExists(chFilePath))   
      {   
      try   
      {   
      m_pCatalog.CreateInstance(__uuidof(Catalog));   
      m_pCatalog->Create(_bstr_t(strConnection   ));   
      }   
      catch(...)   
      {   
      m_pCatalog->Release();   
      m_pCatalog   =   NULL;   
      CoUninitialize();   
      }   
      m_pCatalog->Release();   
        
      }   
      CoUninitialize();
      

  5.   

    导入ADO引擎等,就可以创建accesss文件,不过楼主这种情况可以考虑像sqlite这类文件型数据库