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