#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();
}