资源简介

对ADO进行简单封装,支持参数化、存储过程。 同一语句可以多次执行,以提高效率。 使用方法: 1、创建对象 2、参数准备(如果有的话) 3、数据库命令准备(如果需要多次执行) 4、打开数据库连接 5、执行SQL语句或者准备好的数据库命令,返回受影响的记录条数或者数据集中地记录数。 6、操作传出的数据集(可参照ExecuteScalar) 7、使用PutParameters刷新参数值,进行再次执行(如果需要多次执行)。 8、调用CloseRecordset关闭数据集,同时释放数据库命令对象。 9、关闭数据库连接。 注释暂时比较少,请多包涵。

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “ADOAccess.h“

CADOAccess::CADOAccess()
{
    try
    {
        CoInitialize(NULL);
        m_pConnection.CreateInstance(“ADODB.Connection“);
    }
    catch(...)
    {
        TRACE(L“Warning: %s 发生异常. 错误信息: %s; 文件: %s; 行: %d\n“)
             __FUNCTION__  L“未知错误“ __FILE__ __LINE__);
    }
}

CADOAccess::~CADOAccess()
{
    m_pConnection.Release();
    CoUninitialize();
}

BOOL CADOAccess::IsConnectionOpen()
{
    return (m_pConnection != NULL && (m_pConnection->State & adStateOpen));
}

_RecordsetPtr CADOAccess::OpenSchema(SchemaEnum QueryType)
{
    return m_pConnection->OpenSchema(QueryType);
}

BOOL CADOAccess::OpenConnection(LPCTSTR lpszConnect long lOptions)
{
    HRESULT rtn;

    if (_tcscmp(lpszConnect _T(““)) != 0)
    {
        m_strConnection = lpszConnect;
    }

    if (m_strConnection.IsEmpty())
    {
        ASSERT(FALSE);
        return FALSE;
    }

    if (IsConnectionOpen())
    {
        return TRUE;
    }

    try
    {
        m_pConnection->Mode = adModeReadWrite;
        m_pConnection->CursorLocation = adUseClient;
        rtn = m_pConnection->Open((_bstr_t)m_strConnection ““ ““ lOptions);
        return (rtn == S_OK);
    }
    catch (_com_error e)
    {
        TRACE(_T(“Warning: %s 发生异常. 错误信息: %s; 文件: %s; 行: %d\n“)
             __FUNCTION__  e.ErrorMessage() __FILE__ __LINE__);
        return FALSE;
    } 
    catch (...)
    {
        TRACE(_T(“Warning: 连接数据库时发生未知错误:“));
    }
    return FALSE;
}

BOOL CADOAccess::ConnectSQLServer(CString strDBSrc CString strDBName
         CString strUser CString strPwd long lOptions)
{
    CString strConnect =_T(“Provider=SQLOLEDB.1; Data Source=%s;“);
    strConnect.Append(_T(“ Initial Catalog=%s; User ID=%s; PWD=%s“));
    m_strConnection.Format(strConnect strDBSrc strDBName strUser strPwd);
    return OpenConnection(m_strConnection lOptions);
}

void CADOAccess::CloseConnection()
{
    try
    {
        CloseRecordset();

        if (m_pCommand != NULL)
        {
            m_pCommand.Release();
        }

        if (IsConnectionOpen()) 
        {
            m_pConnection->Close();
        }
    }
    catch (_com_error e)
    {
        TRACE(_T(“Warning: %s 发生异常. 错误信息: %s; 文件: %s; 行: %d\n“)
             __FUNCTION__ e.ErrorMessage() __FILE__ __LINE__);
    } 
}

long CADOAccess::BeginTrans()
{
    ASSERT(m_pConnection != NULL);

    try
    {
        return m_pConnection->BeginTrans();
    }
    catch (_com_error e)
    {
        TRACE(_T(“Warning: %s 发生异常. 错误信息: %s; 文件: %s; 行: %d\n“)
             __FUNCTION__ e.ErrorMessage() __FILE__ __LINE__);
        return -1;
    } 
    return -1;
}

BOOL CADOAccess::RollbackTrans()
{
    ASSERT(m_pConnection != NULL);

    try
    {
        return SUCCEEDED(m_pConnection->RollbackTrans());
    }
    catch (_com_error e)
    {
        TRACE(_T(“Warn

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2097  2009-11-20 14:21  ADOAccess.h

     文件       9018  2009-11-23 15:01  ADOAccess.cpp

----------- ---------  ---------- -----  ----

                11115                    2


评论

共有 条评论