在NT操作系统下,用Ado连接SQL(未对数据库进行操作),退出时就报错。这是为什么呀?

解决方案 »

  1.   

    /*===================================================================
    Name: 连接到数据源.
    -----------------------------------------------------
    Params: strConnect: 连接字符串,包含连接信息.
    lOptions: 可选。决定该方法是在连接建立之后(异步)还是连接建立之前(同步)返回。可以是如下某个常量:
    常量 说明 
    adConnectUnspecified (默认)同步方式打开连接。 
    adAsyncConnect 异步方式打开连接。Ado用 ConnectComplete 事件来通知何时完成连接。 
    =====================================================================*/
    BOOL CAdoConnection::Connect(LPCTSTR strConnect, long lOptions)
    {
    m_strConnect = strConnect;
    try
    {
    ///创建 Connection 对象---------------------------
    HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");
    if (SUCCEEDED(hr))
    {
    // 连接数据库---------------------------------------------
    if (SUCCEEDED(m_pConnection->Open(strConnect, "", "", lOptions)))
    {
    return TRUE;
    }
    }
    }
    catch (_com_error e)
    {
    TRACE(_T(":( 连接数据库发生错误: %s\n"), e.ErrorMessage());
    return FALSE;

    catch (...)
    {
    TRACE(_T(":( 连接数据库时发生未知错误:"));
    }
    return FALSE;
    }
    ///////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////
             ………………
             if(!m_adoConnection.OleInit())//m_adoConnection是一个包装好的CAdoConnection类的实例
    {
    AfxMessageBox("初始化OLE错误!");
    return false;
    }

    m_adoConnection.Disconnect();
            if (!m_adoConnection.Connect(LPCSTR(strConnection)))//该处注释掉时系统能正常退出
    {
    AfxMessageBox("连接数据库失败!");
    return false;
    }
             //退出系统就报错