//--------------------------------------------------------------------------------------------------
// 功 能:創建資料庫
// 輸 入:tmCurrent 時間
// 輸 出:
// 返 回:TRUE 成功
// FALSE 失敗
//--------------------------------------------------------------------------------------------------
BOOL CLog::CreateDataBase(CTime *tmCurrent)
{
if(!tmCurrent) return FALSE;
CloseDataBase();
char DataBaseName[MAX_PATH]; //CEP1: DataBaseName[100]
char PathBaseName[MAX_PATH]; //CEP1: PathBaseName[100]
//CReportDlg *pDlg = (CReportDlg *)AfxGetMainWnd();
sprintf(PathBaseName, "%s\\Log", dirWork);
::CreateDirectory(PathBaseName, NULL);
sprintf(DataBaseName, "%s\\Log\\Log%04d%02d%02d.mdb", dirWork, tmCurrent->GetYear(), tmCurrent->GetMonth(), tmCurrent->GetDay());
CString strConnect;
strConnect.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s"), DataBaseName);
COleVariant Connect(strConnect);
try
{
ADOX::_CatalogPtr pCatalog = NULL;
pCatalog.CreateInstance(_T("ADOX.Catalog"));
pCatalog->Create((LPCTSTR)strConnect);
//在這里要拋出例外,創建連接不了資料庫,求大神指點!
pConnection.CreateInstance(_T("ADODB.Connection"));
pConnection->PutCommandTimeout(30);
pConnection->PutConnectionTimeout(30);
pConnection->put_CursorLocation(ADODB::adUseClient);
pConnection->Open(_bstr_t(strConnect),_bstr_t(),_bstr_t(),ADODB::adConnectUnspecified);
pCatalog->PutActiveConnection(_variant_t((IDispatch *)pConnection));
ADOX::_TablePtr pTableRadar = NULL;
pTableRadar.CreateInstance(_T("ADOX.Table"));
pTableRadar->ParentCatalog = pCatalog;
pTableRadar->Name = "雷達日志";
ADOX::ColumnsPtr pColsRadar = pTableRadar->Columns;
//pColsRadar->Append(_T("原檔案名時間"), ADOX::adDate, 0);
pColsRadar->Append(_T("原檔案名"), ADOX::adWChar, 0);
pColsRadar->Append(_T("壓縮后檔案名"), ADOX::adWChar, 128);
//pColsRadar->Append(_T("壓縮后時間"), ADOX::adDate, 0);
pColsRadar->Append(_T("檔案發送時間"), ADOX::adDate, 0);
pColsRadar->Append(_T("上傳是否成功"), ADOX::adWChar, 0);
//pColsRadar->GetItem(_T("原檔案名時間"))->Properties->GetItem(_T("Jet OLEDB:Compressed UniCode Strings"))->Value = true;
pColsRadar->GetItem(_T("原檔案名"))->Properties->GetItem(_T("Jet OLEDB:Compressed UniCode Strings"))->Value = true;
pColsRadar->GetItem(_T("壓縮后檔案名"))->Properties->GetItem(_T("Jet OLEDB:Compressed UniCode Strings"))->Value = true;
//pColsRadar->GetItem(_T("壓縮后時間"))->Properties->GetItem(_T("Jet OLEDB:Compressed UniCode Strings"))->Value = true;
pColsRadar->GetItem(_T("檔案發送時間"))->Properties->GetItem(_T("Jet OLEDB:Compressed UniCode Strings"))->Value = true;
pColsRadar->GetItem(_T("上傳是否成功"))->Properties->GetItem(_T("Jet OLEDB:Compressed UniCode Strings"))->Value = true;
pCatalog->Tables->Append(_variant_t ((IDispatch*)pTableRadar));
ADOX::_TablePtr pTableNote = NULL;
pTableNote.CreateInstance(_T("ADOX.Table"));
pTableNote->ParentCatalog = pCatalog;
pTableNote->Name = "場站日記";
ADOX::ColumnsPtr pColsNote = pTableNote->Columns;
pColsNote->Append(_T("內容"), ADOX::adWChar, 255);
pColsNote->GetItem(_T("內容"))->Properties->GetItem(_T("Jet OLEDB:Compressed UniCode Strings"))->Value = true;
pCatalog->Tables->Append(_variant_t ((IDispatch*)pTableNote));
pCatalog->Tables->Refresh();
tmOpened = *tmCurrent;
bOpened = TRUE;
}
catch(_com_error &e)
{
return FALSE;
}
catch(...)
{
return FALSE;
}
return TRUE;
}
//CreateDataBase()結束
//--------------------------------------------------------------------------------------------------
uj5u.com熱心網友回復:
DataBaseName 斷點除錯看看這個路徑對應的檔案是否存在uj5u.com熱心網友回復:
pCatalog->Create((LPCTSTR)strConnect);這個應該使用
pCatalog->Create((_bstr)strConnect);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/109620.html
標籤:數據庫
上一篇:請教下靜態鏈接如何指定dll位置
