📄 database.cpp
字号:
#include "Database.h"
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "AdoEOF")
bool FullVersionTable(HWND hwndVersionTable, LPTSTR szAbtFileName, LPTSTR szAncientBookName)
{
int iRecordNumb = 0;
TCHAR szSql[1024] = {0};
TCHAR szStroe[128] = {0};
TCHAR szLatestVersion[256] = {0};
CoInitialize(NULL);
_ConnectionPtr pConnection = NULL;
pConnection.CreateInstance(__uuidof(Connection));
pConnection->CommandTimeout = 8;
pConnection->ConnectionString = (_bstr_t)szAbtFileName;
pConnection->Provider = TEXT("Microsoft.Jet.OLEDB.4.0");
try
{
pConnection->Open(pConnection->ConnectionString,
"", "", adConnectUnspecified);
}
catch(_com_error e)
{
if(GetSystemDefaultLCID() == 0x0804)
{
MessageBox(NULL, TEXT("单捞鸥海捞胶 凯扁 坷幅!"), 0, 0);
}
else
{
MessageBox(NULL, TEXT("Failed to open database!"), 0, 0);
}
return false;
}
_RecordsetPtr pRecordset = NULL;
pRecordset.CreateInstance(__uuidof(Recordset));
_stprintf(szSql, TEXT("SELECT VersionD.Version, VersionM.StoreName FROM VersionD LEFT OUTER JOIN VersionM ON VersionD.Store=VersionM.Store WHERE VersionD.Name=\'%s\' ORDER BY VersionD.Version"), szAncientBookName);
try
{
pRecordset->Open(szSql, (IDispatch *)pConnection, adOpenDynamic,
adLockOptimistic, adModeUnknown);
}
catch(_com_error e)
{
if(GetSystemDefaultLCID() == 0x0804)
{
MessageBox(NULL, TEXT("单捞鸥海捞胶 炼雀 坷幅!"), 0, 0);
}
else
{
MessageBox(NULL, TEXT("Failed to get data!"), 0, 0);
}
return false;
}
if(pRecordset->AdoEOF)
{
if(GetSystemDefaultLCID() == 0x0804)
{
MessageBox(NULL, TEXT("涝仿茄 氓捞抚篮 吝惫扁夯绊利海捞胶俊 殿废等 氓捞抚俊辑 何钦登绰 巴阑 茫阑 荐 绝嚼聪促!"), 0, 0);
}
else
{
MessageBox(NULL, TEXT("The bookname inputed is invalid, please search with booknames in AncientBook!"), 0, 0);
}
return false;
}
while(!pRecordset->AdoEOF)
{
variant_t var;
var = pRecordset->GetCollect(TEXT("Version"));
if(var.vt != VT_NULL)
{
LVITEM lvItem;
lvItem.mask = LVIF_TEXT;
lvItem.iItem = iRecordNumb;
lvItem.iSubItem = 0;
if(_tcscmp(szLatestVersion, (LPTSTR)(_bstr_t)var))
{
_tcscpy(szLatestVersion, (LPTSTR)(_bstr_t)var);
lvItem.pszText = szLatestVersion;
}
else
{
lvItem.pszText = TEXT("");
}
ListView_InsertItem(hwndVersionTable, &lvItem);
}
var = pRecordset->GetCollect(TEXT("StoreName"));
if(var.vt != VT_NULL)
{
_tcscpy(szStroe, (LPTSTR)(_bstr_t)var);
ListView_SetItemText(hwndVersionTable, iRecordNumb, 1, szStroe);
}
iRecordNumb++;
pRecordset->MoveNext();
}
if(pRecordset->State)
{
pRecordset->Close();
pRecordset = NULL;
}
if(pConnection->State)
{
pConnection->Close();
pConnection = NULL;
}
CoUninitialize();
return true;
}
bool GetVersionDetail(LPTSTR szAbtFileName, VERSION_DETAIL *versionDetail)
{
TCHAR szSql[1024] = {0};
CoInitialize(NULL);
_ConnectionPtr pConnection = NULL;
pConnection.CreateInstance(__uuidof(Connection));
pConnection->CommandTimeout = 8;
pConnection->ConnectionString = (_bstr_t)szAbtFileName;
pConnection->Provider = TEXT("Microsoft.Jet.OLEDB.4.0");
try
{
pConnection->Open(pConnection->ConnectionString,
"", "", adConnectUnspecified);
}
catch(_com_error e)
{
return false;
}
_RecordsetPtr pRecordset = NULL;
pRecordset.CreateInstance(__uuidof(Recordset));
_stprintf(szSql, TEXT("SELECT VersionD.VersionName, VersionD.Author, VersionD.VersionNameExpand, VersionD.Hint FROM VersionD LEFT OUTER JOIN VersionM ON VersionD.Store=VersionM.Store WHERE VersionD.Name=\'%s\' AND VersionD.Version=\'%s\' AND VersionM.StoreName=\'%s\'"),
versionDetail->szBookName_Ancient, versionDetail->szVersion, versionDetail->szStore);
try
{
pRecordset->Open(szSql, (IDispatch *)pConnection, adOpenDynamic,
adLockOptimistic, adModeUnknown);
}
catch(_com_error e)
{
return false;
}
variant_t var;
var = pRecordset->GetCollect(TEXT("VersionName"));
if(var.vt != VT_NULL)
{
_tcscpy(versionDetail->szBookName_Version, (LPTSTR)(_bstr_t)var);
}
else
{
return false;
}
var = pRecordset->GetCollect(TEXT("Author"));
if(var.vt != VT_NULL)
{
_tcscpy(versionDetail->szAuthor, (LPTSTR)(_bstr_t)var);
}
else
{
return false;
}
var = pRecordset->GetCollect(TEXT("Hint"));
if(var.vt != VT_NULL)
{
_tcscpy(versionDetail->szHint, (LPTSTR)(_bstr_t)var);
}
else
{
_tcscpy(versionDetail->szHint, TEXT(""));
return false;
}
var = pRecordset->GetCollect(TEXT("VersionNameExpand"));
if(var.vt != VT_NULL)
{
_tcscpy(versionDetail->szExpand, (LPTSTR)(_bstr_t)var);
}
else
{
_tcscpy(versionDetail->szExpand, TEXT(""));
return false;
}
if(pRecordset->State)
{
pRecordset->Close();
pRecordset = NULL;
}
if(pConnection->State)
{
pConnection->Close();
pConnection = NULL;
}
CoUninitialize();
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -