首頁 >資料庫 >mysql教程 >ADO访问Access数据库错误解决

ADO访问Access数据库错误解决

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB原創
2016-06-07 15:49:041345瀏覽

欢迎进入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