首页 > 数据库 > mysql教程 > ADO访问Access数据库错误解决

ADO访问Access数据库错误解决

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-07 15:49:04
原创
1351 人浏览过

欢迎进入C/C++编程社区论坛,与300万技术人员互动交流 >>进入 最近在用ADO访问Access数据库的时候出现了一个奇怪的错误,觉得有必要记录下来,和大家分享一下。 环境 win7 x86系统; VS2012编译器; Office2010; Access2000~Access2003连接串建立数据库连接

欢迎进入C/C++编程社区论坛,与300万技术人员互动交流 >>进入

    最近在用ADO访问Access数据库的时候出现了一个奇怪的错误,觉得有必要记录下来,和大家分享一下。

    环境

    win7 x86系统;

    VS2012编译器;

    Office2010;

    Access2000~Access2003连接串建立数据库连接。

    关键数据库操作代码

    BOOL CAccessDatabase::Query(const CString strSQLString, UINT nFieldNumber, vector >& vecvecVariant)

    {

    _variant_t Variant;

    vector<_variant_t> vecVariant;

    EnterCriticaldiv(&m_cs);

    _RecordsetPtr pRecordset = NULL;

    HRESULT hr = S_FALSE;

    try

    {

    hr = pRecordset.CreateInstance(_T("ADODB.Recordset"));

    if (SUCCEEDED(hr))

    {

    hr = pRecordset->Open(strSQLString.AllocSysString(), m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);

    if (SUCCEEDED(hr))

    {

    if (!pRecordset->adoEOF)

    {

    hr = pRecordset->MoveFirst();

    if (SUCCEEDED(hr))

    {

    while (!(pRecordset->adoEOF))

    {

    vecVariant.clear();

    for (UINT i = 0; i

    {

    ZeroMemory(&Variant, sizeof(Variant));

    Variant = pRecordset->GetCollect(_variant_t((long)i));

    vecVariant.push_back(Variant);

    }

    vecvecVariant.push_back(vecVariant);

    hr = pRecordset->MoveNext();

    }

    }

    else

    {

    m_pLogFile->WriteLog(GetLastError(), _T("移动记录集指针到首部发生错误"));

    if (pRecordset->GetState() != adStateClosed)

    {

    hr = pRecordset->Close();

    if (FAILED(hr))

    {

    m_pLogFile->WriteLog(GetLastError(), _T("关闭记录集失败"));

    }

    else

    {

    m_pLogFile->WriteLog(GetLastError(), _T("记录集已关闭"));

    }

    }

    if (pRecordset != NULL)

    {

    pRecordset.Release();

    pRecordset = NULL;

    }

    LeaveCriticaldiv(&m_cs);

    return FALSE;

    }

    }

    else

    {

    m_pLogFile->WriteLog(GetLastError(), _T("查询的记录集为空"));

    }

    }

    else

    {

    m_pLogFile->WriteLog(GetLastError(), _T("打开记录集失败"));

    if (pRecordset != NULL)

    {

    pRecordset.Release();

    pRecordset = NULL;

    }

    LeaveCriticaldiv(&m_cs);

    return FALSE;

    }

    }

    else

    {

    m_pLogFile->WriteLog(GetLastError(), _T("初始化记录集失败"));

    pRecordset = NULL;

    LeaveCriticaldiv(&m_cs);

    return FALSE;

    }

    }

[1] [2] 

ADO访问Access数据库错误解决

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板