Heim > Datenbank > MySQL-Tutorial > ADO访问Access数据库错误解决

ADO访问Access数据库错误解决

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 15:49:04
Original
1351 Leute haben es durchsucht

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

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage