`
缥缈孤鸿
  • 浏览: 42176 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

MFC中ADO方式操作数据库实例(转)

    博客分类:
  • C++
阅读更多
连接ACCESS为例:
//头文件
#pragma once   
  
#include "math.h"   
  
#import "MSADO15.DLL"   rename_namespace("ADOWE") rename("EOF","EndOfFile")   
using namespace ADOWE;  
  
class CDBAdo  
{  
public:  
    _CommandPtr     m_ptrCommand;       //命令对象   
    _RecordsetPtr   m_ptrRecordset;     //记录集对象   
    _ConnectionPtr  m_ptrConnection;    //数据库对象   
  
    CString         m_strConnect,       //连接字符串   
                    m_strErrorMsg;      //错误信息   
  
public:  
    CDBAdo(void);  
    ~CDBAdo(void);  
  
    void    DetectResult(HRESULT hResult);  
    void    RecordErrorMsg(_com_error comError);  
    CString GetLastError(){return m_strErrorMsg;}  
  
    bool    CreateInstance();  
    bool    SetConnectionString(CString strDriver, CString strIP, WORD wPort, CString strCatalog, CString strUserID, CString strPassword);  
    bool    SetConnectionString(CString strDriver, CString strDataSrc, CString strPassword);  
    bool    OpenConnection();  
    bool    CloseConnection();  
    bool    IsConnecting();  
  
    void    ClearAllParameters();  
    void    AddParamter(LPCTSTR lpcsrName, ADOWE::ParameterDirectionEnum Direction, ADOWE::DataTypeEnum Type, long lSize, _variant_t & vtValue);  
    void    SetSPName(LPCTSTR lpcsrSPName);  
    bool    ExecuteCommand(bool bIsRecordset);  
    bool    Execute(LPCTSTR lpcsrCommand);  
    long    GetReturnValue();  
  
    bool    OpenRecordset(char* szSQL);  
    bool    CloseRecordset();  
    bool    IsRecordsetOpened();  
    bool    IsEndRecordset();  
    void    MoveToNext();  
    void    MoveToFirst();  
    void    MoveToLast();  
    long    GetRecordCount();  
  
    bool    GetFieldValue(LPCTSTR lpcsrFieldName, WORD& wValue);  
    bool    GetFieldValue(LPCTSTR lpcsrFieldName, CString& strValue);  
    bool    GetFieldValue(LPCTSTR lpcsrFieldName, INT& nValue);  
    bool    GetFieldValue(LPCTSTR lpcsrFieldName, BYTE& bValue);  
    bool    GetFieldValue(LPCTSTR lpcsrFieldName, LONG& lValue);  
    bool    GetFieldValue(LPCTSTR lpcsrFieldName, DWORD& dwValue);  
    bool    GetFieldValue(LPCTSTR lpcsrFieldName, UINT& ulValue);  
    bool    GetFieldValue(LPCTSTR lpcsrFieldName, DOUBLE& dbValue);  
    bool    GetFieldValue(LPCTSTR lpcsrFieldName, __int64& llValue);  
    bool    GetFieldValue(LPCTSTR lpcsrFieldName, COleDateTime& Time);  
    bool    GetFieldValue(LPCTSTR lpcsrFieldName, bool& bValue);  
};  
#pragma once

#include "math.h"

#import "MSADO15.DLL"	rename_namespace("ADOWE") rename("EOF","EndOfFile")
using namespace ADOWE;

class CDBAdo
{
public:
	_CommandPtr		m_ptrCommand;		//命令对象
	_RecordsetPtr	m_ptrRecordset;		//记录集对象
	_ConnectionPtr	m_ptrConnection;	//数据库对象

	CString			m_strConnect,		//连接字符串
					m_strErrorMsg;		//错误信息

public:
	CDBAdo(void);
	~CDBAdo(void);

	void	DetectResult(HRESULT hResult);
	void	RecordErrorMsg(_com_error comError);
	CString	GetLastError(){return m_strErrorMsg;}

	bool	CreateInstance();
	bool	SetConnectionString(CString strDriver, CString strIP, WORD wPort, CString strCatalog, CString strUserID, CString strPassword);
	bool	SetConnectionString(CString strDriver, CString strDataSrc, CString strPassword);
	bool	OpenConnection();
	bool	CloseConnection();
	bool	IsConnecting();

	void	ClearAllParameters();
	void	AddParamter(LPCTSTR lpcsrName, ADOWE::ParameterDirectionEnum Direction, ADOWE::DataTypeEnum Type, long lSize, _variant_t & vtValue);
	void	SetSPName(LPCTSTR lpcsrSPName);
	bool	ExecuteCommand(bool bIsRecordset);
	bool	Execute(LPCTSTR lpcsrCommand);
	long	GetReturnValue();

	bool	OpenRecordset(char* szSQL);
	bool	CloseRecordset();
	bool	IsRecordsetOpened();
	bool	IsEndRecordset();
	void	MoveToNext();
	void	MoveToFirst();
	void	MoveToLast();
	long	GetRecordCount();

	bool	GetFieldValue(LPCTSTR lpcsrFieldName, WORD& wValue);
	bool	GetFieldValue(LPCTSTR lpcsrFieldName, CString& strValue);
	bool	GetFieldValue(LPCTSTR lpcsrFieldName, INT& nValue);
	bool	GetFieldValue(LPCTSTR lpcsrFieldName, BYTE& bValue);
	bool	GetFieldValue(LPCTSTR lpcsrFieldName, LONG& lValue);
	bool	GetFieldValue(LPCTSTR lpcsrFieldName, DWORD& dwValue);
	bool	GetFieldValue(LPCTSTR lpcsrFieldName, UINT& ulValue);
	bool	GetFieldValue(LPCTSTR lpcsrFieldName, DOUBLE& dbValue);
	bool	GetFieldValue(LPCTSTR lpcsrFieldName, __int64& llValue);
	bool	GetFieldValue(LPCTSTR lpcsrFieldName, COleDateTime& Time);
	bool	GetFieldValue(LPCTSTR lpcsrFieldName, bool& bValue);
}; 

//实现文件

[cpp] view plaincopyprint?#include "StdAfx.h"   
#include "DBAdo.h"   
  
CDBAdo::CDBAdo(void)  
{  
    m_strConnect    = _T("");  
    m_strErrorMsg   = _T("");  
  
    //初始化 COM   
    CoInitialize(NULL);  
}  
  
CDBAdo::~CDBAdo(void)  
{  
    //关闭连接   
    CloseConnection();  
  
    //释放对象   
    if(m_ptrCommand!=NULL)  
        m_ptrCommand.Release();  
    if(m_ptrRecordset!=NULL)  
        m_ptrRecordset.Release();  
    if(m_ptrConnection!=NULL)  
        m_ptrConnection.Release();  
}  
  
bool CDBAdo::CreateInstance()  
{  
    //创建对象   
    m_ptrCommand.CreateInstance(__uuidof(Command));  
    m_ptrRecordset.CreateInstance(__uuidof(Recordset));  
    m_ptrConnection.CreateInstance(__uuidof(Connection));  
  
    if(m_ptrCommand==NULL)  
    {  
        m_strErrorMsg   = _T("数据库命令对象创建失败");  
        return  false;  
    }  
    if(m_ptrRecordset==NULL)  
    {  
        m_strErrorMsg   = _T("数据库记录集对象创建失败");  
        return  false;  
    }  
    if(m_ptrConnection==NULL)  
    {  
        m_strErrorMsg   = _T("数据库连接对象创建失败");  
        return  false;  
    }  
  
    //设置变量   
    m_ptrCommand->CommandType    = adCmdStoredProc;  
    return  true;  
}  
  
void CDBAdo::DetectResult(HRESULT hResult)  
{  
    if(FAILED(hResult))  
        _com_issue_error(hResult);  
}  
  
void CDBAdo::RecordErrorMsg(_com_error comError)  
{  
    _bstr_t bstrDescribe(comError.Description());  
  
    m_strErrorMsg.Format(TEXT("ADO 错误:0x%8x,%s"), comError.Error(), (LPCTSTR)bstrDescribe);  
}  
  
bool CDBAdo::SetConnectionString(CString strDriver, CString strIP, WORD wPort, CString strCatalog, CString strUserID, CString strPassword)  
{  
    CString strProvider, strPWD, strUID, strData, strDataSrc;  
  
    strProvider.Format(_T("Provider=%s;"), strProvider);  
    strPWD.Format(_T("Password=%s;"), strPassword);  
    strUID.Format(_T("User ID=%s;"), strUserID);  
    strData.Format(_T("Initial Catalog=%s;"), strCatalog);  
    strDataSrc.Format(_T("Data Source=%s,%ld;"), strIP, wPort);  
  
    //构造连接字符串   
    m_strConnect    = strProvider+strPWD+_T("Persist Security Info=True;")+strUID+strData+strDataSrc;  
  
    return true;  
}  
  
bool CDBAdo::SetConnectionString(CString strDriver, CString strDataSrc, CString strPassword)  
{  
    CString strProvider, strDataSource, strPWD;  
  
    strProvider.Format(_T("Provider=%s;"), strDriver);  
    strDataSource.Format(_T("Data Source=%s;"), strDataSrc);  
    strPWD.Format(_T("Jet OLEDB:DataBase Password=%s;"), strPassword);  
  
    //构造连接字符串   
    m_strConnect    = strProvider+_T("User ID=Admin;")+strDataSource+strPWD;  
  
    return true;  
}  
  
bool CDBAdo::OpenConnection()  
{  
    try  
    {  
        //关闭连接   
        CloseConnection();  
  
        //连接数据库   
        DetectResult(m_ptrConnection->Open(_bstr_t(m_strConnect), "", "", adModeUnknown));  
        m_ptrConnection->CursorLocation  = adUseClient;  
        m_ptrCommand->ActiveConnection   = m_ptrConnection;  
  
        return true;  
    }  
    catch(_com_error& comError)   
    {  
        RecordErrorMsg(comError);  
    }  
  
    return false;  
}  
  
bool CDBAdo::CloseConnection()  
{  
    try  
    {  
        CloseRecordset();  
        if((m_ptrConnection!=NULL)&&(m_ptrConnection->GetState()!=adStateClosed))  
            DetectResult(m_ptrConnection->Close());  
  
        return true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return false;  
}  
  
bool CDBAdo::IsConnecting()  
{  
    try   
    {  
        //状态判断   
        if(m_ptrConnection==NULL)  
            return  false;  
        if(m_ptrConnection->GetState()==adStateClosed)  
            return  false;  
  
        //参数判断   
        long    lErrorCount = m_ptrConnection->Errors->Count;  
        if(lErrorCount>0L)  
        {  
            ErrorPtr    pError   = NULL;  
            for(long i=0; i<lErrorCount; i++)  
            {  
                pError  = m_ptrConnection->Errors->GetItem(i);  
                if(pError->Number==0x80004005)  
                    return  false;  
            }  
        }  
  
        return true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return false;  
}  
  
bool CDBAdo::OpenRecordset(char* szSQL)  
{  
    try  
    {  
        //关闭记录集   
        CloseRecordset();  
  
        m_ptrRecordset->Open(szSQL, m_ptrConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);  
  
        return true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  
  
bool CDBAdo::CloseRecordset()  
{  
    try  
    {  
        if(IsRecordsetOpened())  
            DetectResult(m_ptrRecordset->Close());  
        return true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return false;  
}  
  
bool CDBAdo::IsRecordsetOpened()  
{  
    if(m_ptrRecordset==NULL)  
        return  false;  
    if(m_ptrRecordset->GetState()==adStateClosed)  
        return  false;  
  
    return true;  
}  
  
bool CDBAdo::IsEndRecordset()  
{  
    try   
    {  
        return (m_ptrRecordset->EndOfFile==VARIANT_TRUE);  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return true;  
}  
  
void CDBAdo::MoveToNext()  
{  
    try   
    {   
        m_ptrRecordset->MoveNext();   
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
}  
  
void CDBAdo::MoveToFirst()  
{  
    try   
    {   
        m_ptrRecordset->MoveFirst();   
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
}  
  
void CDBAdo::MoveToLast()  
{  
    try   
    {   
        m_ptrRecordset->MoveLast();   
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
}  
  
long CDBAdo::GetRecordCount()  
{  
    try  
    {  
        if(m_ptrRecordset==NULL)  
            return  0;  
        return  m_ptrRecordset->GetRecordCount();  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return 0;  
}  
  
void CDBAdo::ClearAllParameters()  
{  
    try   
    {  
        long    lParamCount = m_ptrCommand->Parameters->Count;  
        if(lParamCount>0L)  
        {  
            for(long i=lParamCount; i>0; i--)  
            {  
                _variant_t  vtIndex;  
  
                vtIndex.intVal  = i-1;  
                m_ptrCommand->Parameters->Delete(vtIndex);  
            }  
        }  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
}  
  
void CDBAdo::AddParamter(LPCTSTR lpcsrName, ADOWE::ParameterDirectionEnum Direction, ADOWE::DataTypeEnum Type, long lSize, _variant_t & vtValue)  
{  
    ASSERT(lpcsrName!=NULL);  
    try   
    {  
        _ParameterPtr   Parameter   = m_ptrCommand->CreateParameter(lpcsrName, Type, Direction, lSize, vtValue);  
        m_ptrCommand->Parameters->Append(Parameter);  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
}  
  
void CDBAdo::SetSPName(LPCTSTR lpcsrSPName)  
{  
    try   
    {   
        m_ptrCommand->CommandText    = lpcsrSPName;   
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
}  
  
bool CDBAdo::ExecuteCommand(bool bIsRecordset)  
{  
    try   
    {  
        //关闭记录集   
        CloseRecordset();  
        //执行命令   
        if(bIsRecordset)  
        {  
            m_ptrRecordset->PutRefSource(m_ptrCommand);  
            m_ptrRecordset->CursorLocation   = adUseClient;  
            DetectResult(m_ptrRecordset->Open((IDispatch*)m_ptrCommand, vtMissing, adOpenForwardOnly, adLockReadOnly, adOptionUnspecified));  
        }else   
        {  
            m_ptrConnection->CursorLocation  = adUseClient;  
            DetectResult(m_ptrCommand->Execute(NULL, NULL, adExecuteNoRecords));  
        }  
        return  true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  
  
bool CDBAdo::Execute(LPCTSTR lpcsrCommand)  
{  
    try  
    {  
        m_ptrConnection->CursorLocation  = adUseClient;  
        m_ptrConnection->Execute(lpcsrCommand, NULL, adExecuteNoRecords);  
        return  true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  
  
long CDBAdo::GetReturnValue()  
{  
    try   
    {  
        _ParameterPtr   ptrParam;  
        long            lParameterCount = m_ptrCommand->Parameters->Count;  
        for(long i=0; i<lParameterCount; i++)  
        {  
            ptrParam    = m_ptrCommand->Parameters->Item[i];  
            if(ptrParam->Direction==adParamReturnValue)  
                return  ptrParam->Value.lVal;  
        }  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  0;  
}  
  
bool CDBAdo::GetFieldValue(LPCTSTR lpcsrFieldName, WORD& wValue)  
{  
    wValue  = 0L;  
    try  
    {  
        _variant_t  vtFld   = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;  
        if((vtFld.vt!=VT_NULL)&&(vtFld.vt!=VT_EMPTY))  
            wValue  = (WORD)vtFld.ulVal;  
  
        return true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return false;  
}  
  
bool CDBAdo::GetFieldValue(LPCTSTR lpcsrFieldName, CString& strValue)  
{  
    try  
    {  
        _variant_t vtFld    = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;  
        if(vtFld.vt==VT_BSTR)  
        {  
            strValue    = (char*)_bstr_t(vtFld);  
            strValue.TrimLeft();  
            return  true;  
        }  
        return  false;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  
  
bool CDBAdo::GetFieldValue(LPCTSTR lpcsrFieldName, INT& nValue)  
{  
    nValue  = 0;  
    try  
    {  
        _variant_t vtFld = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;  
        switch(vtFld.vt)  
        {  
        case VT_BOOL:  
            {  
                nValue  = vtFld.boolVal;  
                break;  
            }  
        case VT_I2:  
        case VT_UI1:  
            {  
                nValue  = vtFld.iVal;  
                break;  
            }  
        case VT_NULL:  
        case VT_EMPTY:  
            {  
                nValue  = 0;  
                break;  
            }  
        default: nValue = vtFld.iVal;  
        }     
        return true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return false;  
}  
  
bool CDBAdo::GetFieldValue(LPCTSTR lpcsrFieldName, BYTE& bValue)  
{  
    bValue  = 0;  
    try  
    {  
        _variant_t vtFld    = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;  
        switch(vtFld.vt)  
        {  
        case VT_BOOL:  
            {  
                bValue  = (vtFld.boolVal!=0)?1:0;  
                break;  
            }  
        case VT_I2:  
        case VT_UI1:  
            {  
                bValue  = (vtFld.iVal>0)?1:0;  
                break;  
            }  
        case VT_NULL:  
        case VT_EMPTY:  
            {  
                bValue  = 0;  
                break;  
            }  
        default: bValue = (BYTE)vtFld.iVal;  
        }     
        return true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  
bool CDBAdo::GetFieldValue(LPCTSTR lpcsrFieldName, UINT& ulValue)  
{  
    ulValue = 0L;  
    try  
    {  
        _variant_t  vtFld   = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;  
        if((vtFld.vt!=VT_NULL)&&(vtFld.vt!=VT_EMPTY))  
            ulValue = vtFld.lVal;  
        return  true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  
bool CDBAdo::GetFieldValue(LPCTSTR lpcsrFieldName, DOUBLE& dbValue)  
{  
    dbValue=0.0L;  
    try  
    {  
        _variant_t  vtFld   = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;  
        switch(vtFld.vt)  
        {  
        case VT_R4:dbValue  = vtFld.fltVal;break;  
        case VT_R8:dbValue  = vtFld.dblVal;break;  
        case VT_DECIMAL:  
            {  
                dbValue  = vtFld.decVal.Lo32;  
                dbValue *= (vtFld.decVal.sign==128)?-1:1;  
                dbValue /= pow((float)10,vtFld.decVal.scale);  
            }  
            break;  
        case VT_UI1:dbValue = vtFld.iVal;break;  
        case VT_I2:  
        case VT_I4:dbValue  = vtFld.lVal;break;  
        case VT_NULL:  
        case VT_EMPTY:dbValue   = 0.0L;break;  
        default:dbValue = vtFld.dblVal;  
        }  
        return true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  
bool CDBAdo::GetFieldValue(LPCTSTR lpcsrFieldName, LONG& lValue)  
{  
    lValue  = 0L;  
    try  
    {  
        _variant_t  vtFld   = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;  
        if((vtFld.vt!=VT_NULL)&&(vtFld.vt!=VT_EMPTY))  
            lValue  = vtFld.lVal;  
        return  true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  
bool CDBAdo::GetFieldValue(LPCTSTR lpcsrFieldName, DWORD& dwValue)  
{  
    dwValue = 0L;  
    try  
    {  
        _variant_t  vtFld   = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;  
        if((vtFld.vt!=VT_NULL)&&(vtFld.vt!=VT_EMPTY))  
            dwValue = vtFld.ulVal;  
        return  true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  
bool CDBAdo::GetFieldValue(LPCTSTR lpcsrFieldName, __int64& llValue)  
{  
    llValue = 0L;  
    try  
    {  
        _variant_t  vtFld   = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;  
        if((vtFld.vt!=VT_NULL)&&(vtFld.vt!=VT_EMPTY))  
            llValue=vtFld.lVal;  
  
        return  true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  
bool CDBAdo::GetFieldValue(LPCTSTR lpcsrFieldName, COleDateTime& Time)  
{  
    try  
    {  
        _variant_t  vtFld   = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;  
        switch(vtFld.vt)   
        {  
        case VT_DATE:  
            {  
                COleDateTime    TempTime(vtFld);  
                Time    = TempTime;  
            }break;  
        case VT_EMPTY:  
        case VT_NULL:Time.SetStatus(COleDateTime::null);break;  
        default: return false;  
        }  
        return  true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  
  
bool CDBAdo::GetFieldValue(LPCTSTR lpcsrFieldName, bool& bValue)  
{  
    try  
    {  
        _variant_t  vtFld   = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;  
        switch(vtFld.vt)   
        {  
        case VT_BOOL:bValue=(vtFld.boolVal==0)?false:true;break;  
        case VT_EMPTY:  
        case VT_NULL:bValue = false;break;  
        default:return false;  
        }  
  
        return  true;  
    }  
    catch(_com_error& comError)  
    {  
        RecordErrorMsg(comError);  
    }  
  
    return  false;  
}  

分享到:
评论

相关推荐

    MFC使用ADO读写Access数据库实例

    给出了MFC使用ADO读写Access数据库实例 ,包括具体实现思路,和相关的实现代码

    MFC使用ADO读写Access数据库实例-

    MFC使用ADO读写Access数据库实例-免费

    mfc ado连接sqlserver2005数据库的实例

    通过这个MFC ADO连接SQL Server 2005的实例,我们可以了解到如何在MFC应用程序中使用ADO进行数据库操作的基本流程。这包括初始化COM环境、创建和配置数据库连接、执行SQL查询、处理查询结果以及清理资源。开发者可以...

    MFC通过ADO访问SQL数据库

    在MFC项目中使用ADO访问SQL Server数据库,首先需要配置连接字符串。连接字符串包含了数据库服务器的位置、身份验证方式以及目标数据库等信息。 - **Integrated Security**:表示使用Windows身份验证。 - 示例:`...

    MFC用ADO读写Access数据库实例

    在MFC中使用ADO(ActiveX Data Objects)来读写Access数据库是一种常见的数据库操作方式,特别是对于Visual C++开发者而言。ADO提供了一个简单且高效的接口,允许开发者与各种数据库进行交互,包括Access。以下是...

    MFC ado连接数据库实例

    在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Classes)和ADO(ActiveX Data Objects)来连接并操作MySQL数据库。MFC是微软提供的一种C++库,它为Windows应用程序开发提供了丰富的支持,而ADO则是一...

    MFC用ADO连接ACESS数据库实例

    在MFC中创建DataAdo项目对话框,在资源视图上加上一个list control控件,变量名m_list,Styles View设为Report。在项目DataAdo文件下创建db1的ACESS数据库,表名为表1,字段名称姓名、性别。 1、在stdafx.h头文件...

    VS2010中MFC的ADO方式访问数据库.docx

    ### VS2010中MFC的ADO方式访问数据库 #### 一、概述 Microsoft Foundation Classes(MFC)是Visual C++的一个类库,用于简化Windows应用程序开发过程。MFC支持多种技术,其中包括ActiveX Data Objects(ADO),一...

    mfc ado 数据库实例

    mfc ado 数据库实例 mfc /vc6.0ado连接数据库的实例例程

    MFC ADO数据库编程分解实例

    本资源“MFC ADO数据库编程分解实例”特别适合初学者,旨在帮助他们理解和掌握如何在MFC环境中利用ADO进行数据库操作,包括增、删、查、改四大基本功能。 首先,让我们深入了解一下MFC和ADO: 1. **MFC**:这是一...

    MFC通过ADO调用数据库,CListCtrl控件显示

    在本文中,我们将深入探讨如何在MFC(Microsoft Foundation Classes)应用程序中利用ADO(ActiveX Data Objects)来访问数据库,并将数据展示在CListCtrl控件中。这是一套高效且直观的方式,适用于开发需要与数据库...

    MFC使用ADO读写Access数据库参考例程.pdf

    在使用MFC(Microsoft Foundation Classes)进行数据库应用开发时,ADO(ActiveX Data Objects)提供了一种简单且灵活的方式来访问数据库,尤其是对于那些不熟悉底层技术如OLE DB和COM的开发者。ADO是建立在OLE DB之...

    VC MFC_ADO 数据库操作

    例如,“第21章 ADO数据库编程”很可能包含了一系列的实例,讲解如何使用MFC ADO进行数据库操作,包括连接数据库、执行查询、处理结果集等步骤。 总之,MFC ADO为VC程序员提供了一种高效、灵活的数据库访问方式,...

    基于MFC的ADO数据库分解实例

    通过本教程提供的"基于MFC的ADO数据库分解实例",你将能够逐步学习如何在MFC应用程序中使用ADO进行数据库操作。这个实例将涵盖创建数据库连接、编写SQL查询、处理结果集以及数据的增删改查等核心功能,对初学者来说...

    MFC实现ADO数据库基本操作

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来实现对ActiveX Data Objects (ADO) 数据库的基本操作。对于那些刚开始接触数据库编程的开发者来说,这是一个很好的起点,因为MFC提供了一种...

    MFC程序设计详细实例 第21章 ADO数据库编程

    MFC程序设计详细实例 第21章 ADO数据库编程MFC程序设计详细实例 第21章 ADO数据库编程MFC程序设计详细实例 第21章 ADO数据库编程MFC程序设计详细实例 第21章 ADO数据库编程MFC程序设计详细实例 第21章 ADO数据库编程...

    VC+ado连接数据库实例

    在本文中,我们将深入探讨如何使用Visual C++(VC++)结合ActiveX Data Objects(ADO)来连接并操作Microsoft Access数据库。这是一个常见的编程任务,对于开发Windows桌面应用程序来说尤其重要,因为ADO提供了一种...

    MFC实现SQL数据库ADO连接(适合菜鸟)

    在使用MFC进行Windows应用程序开发时,经常需要对数据进行操作,因此,通过MFC利用ADO进行SQL Server数据库连接便成为一种常见的需求。 ### 实现步骤 1. **创建MFC项目**:在VC6.0中创建一个基于对话框的MFC应用...

    MFC运用ADO操作数据库.doc

    在MFC应用中,使用ADO(ActiveX Data Objects)来操作数据库是一种常见的方式。ADO是微软提供的一个高层级的数据访问接口,它建立在OLE DB之上,简化了对数据库的访问,支持多种编程语言,包括C++。以下是关于MFC与...

Global site tag (gtag.js) - Google Analytics