使用ado操作access,第一次简单的封装了,但是存在有部分不足,功能并不完美,因此找了一个比较强大的封装,稍作更改,以此作为以后使用的,最主要的是里面添加了批量操作、回滚、错误获取、设置分页数据、以及获取分页数据等等功能,如下部分接口:
使用实例也比较简单,如下:
//获取Debug的目录中的数据库文件
CString CMDBSampleDlg::_InitLocalPath(CString& strTemplateFileName)
{
TCHAR modulePath[MAX_PATH];
GetModuleFileName(NULL, modulePath, MAX_PATH);
CString strModulePath(modulePath);
strModulePath = strModulePath.Left(strModulePath.ReverseFind(_T('\\')));
strModulePath = strModulePath + _T("\\") + strTemplateFileName;
return strModulePath;
}
void CMDBSampleDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CString strName = L"aa.mdb";
CString strFullPath = _InitLocalPath(strName);
if (!_IsMDBConnection(strFullPath))
{
m_MDB.Close();
return;
}
CString strQuerySQL;
strQuerySQL.Format(_T("SELECT * FROM Resource"));//查询语句
CADORecordset cRe(&m_MDB);
bool bRet = cRe.Open(strQuerySQL, cRe.openQuery);
if (!bRet)
{
}
//获取当前的列数
long lcount = cRe.GetFieldCount();
for (int i = 0; i < lcount; i++)
{
CADOFieldInfo fldInfo;
BOOL bFieldInfo = cRe.GetFieldInfo(i, &fldInfo);
switch (fldInfo.m_nType)
{
case cRe.typeBigInt:
{
break;
}
case cRe.typeVarChar:
{
break;
}
case cRe.typeDouble:
{
break;
}
default:
break;
}
int yyy = 66;
}
int nRcount = 0;
//获取当前记录总数
nRcount = cRe.GetRecordCount();
CString strGroupID;
while (!cRe.IsEof())
{
cRe.GetFieldValue(_T("id"), strGroupID);//得到文本
cRe.MoveNext();
}
//关闭记录集
cRe.Close();
//关闭数据库
m_MDB.Close();
CDialogEx::OnOK();
}