Home > Database > Mysql Tutorial > ADO访问Access数据库错误解决

ADO访问Access数据库错误解决

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-07 15:49:04
Original
1349 people have browsed it

欢迎进入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数据库错误解决

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template