zoukankan      html  css  js  c++  java
  • MFC-ADO连接SqlServer和Access

    VS2012

    1、初始化ADO,创建连接对象

    //hpp头文件里导入ADO
    //导入ADO动态链接库
    #import "C:Program FilesCommon FilesSystemadomsado15.dll" no_namespace rename("EOF", "adoEOF")
    
    public:
    //连接
    _ConnectionPtr m_pConnectionA;
    _ConnectionPtr m_pConnectionB;
    //cpp文件OnInitDialog()里初始化ADO
    //初始化ADO
    HRESULT hr;
    try
    {
        hr = CoInitialize(NULL);
        //检查初始化是否成功
        if (SUCCEEDED(hr))
        {
            AfxMessageBox("初始化ADO COM成功!");
        }
        else
        {
            AfxMessageBox("初始化ADO COM失败!");
        }


        //创建连接对象A
        if(!SUCCEEDED(m_pConnectionA.CreateInstance(__uuidof(Connection))))
        {
            m_pConnectionA = NULL;
            AfxMessageBox("创建连接对象失败");
            return TRUE;
        }


        //创建连接对象B
        if(!SUCCEEDED(m_pConnectionB.CreateInstance(__uuidof(Connection))))
        {
            m_pConnectionB = NULL;
            AfxMessageBox("创建连接对象失败");
            return TRUE;
        }

    }
    catch (_com_error e)
    {
        CString errormessage;
        errormessage.Format("%s"), e.ErrorMessage();
        AfxMessageBox(errormessage);
    }

     2、创建界面

     3、写代码

    void CDemoDlg::OnBnClickedButtonOpenSql()
    {
        // TODO: 在此添加控件通知处理程序代码
    
        //检查连接的状态
        if (m_pConnectionA->State & adStateOpen)
        {
            AfxMessageBox("SqlServer连接已经打开");
            return;
        }
    
        //打开SqlServer数据库连接
        CString strConnect = "Provider=SQLOLEDB;Server=192.168.1.2;Database=test;uid=sa;pwd=Lu123456;";
        HRESULT hr = m_pConnectionA->Open(_bstr_t(strConnect),"","",adConnectUnspecified);
        if (SUCCEEDED(hr))
        {
            AfxMessageBox("打开SqlServer连接成功");
        }
        else
        {
            AfxMessageBox("打开SqlServer连接失败");
        }
    
    }
    
    
    void CDemoDlg::OnBnClickedButtonCloseSql()
    {
        // TODO: 在此添加控件通知处理程序代码
    
        //检查关闭的状态
        if (!m_pConnectionA->State & adStateOpen)
        {
            AfxMessageBox("未打开SqlServer连接");
            return;
        }
    
        //关闭连接
        if (SUCCEEDED(m_pConnectionA->Close()))
        {
            AfxMessageBox("关闭SqlServer连接成功");
        }
        else
        {
            AfxMessageBox("关闭SqlServer连接失败");
        }
    
    }
    
    
    void CDemoDlg::OnBnClickedButtonOpenAccess()
    {
        // TODO: 在此添加控件通知处理程序代码
    
        //检查连接的状态
        if (m_pConnectionB->State & adStateOpen)
        {
            AfxMessageBox("Access连接已经打开");
            return;
        }
    
        //打开Access数据库连接
        CString strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Demo.mdb";
        HRESULT hr = m_pConnectionB->Open(_bstr_t(strConnect),"","",adConnectUnspecified);
        if (SUCCEEDED(hr))
        {
            AfxMessageBox("打开Access连接成功");
        }
        else
        {
            AfxMessageBox("打开Access连接失败");
        }
    }
    
    
    void CDemoDlg::OnBnClickedButtonCloseAccess()
    {
        // TODO: 在此添加控件通知处理程序代码
    
    
        //检查关闭的状态
        if (!m_pConnectionB->State & adStateOpen)
        {
            AfxMessageBox("未打开Access连接");
            return;
        }
    
        //关闭连接
        if (SUCCEEDED(m_pConnectionB->Close()))
        {
            AfxMessageBox("关闭Access连接成功");
        }
        else
        {
            AfxMessageBox("关闭Access连接失败");
        }
    
    }

    4、演示

     5、执行select语句

    void CDemoDlg::OnBnClickedButtonSelect()
    {
        // TODO: 在此添加控件通知处理程序代码
    
        //ADO读数据库
        CoInitialize(NULL);//初始化ADO
    
        _ConnectionPtr pConn(__uuidof(Connection));
        _RecordsetPtr pRst(__uuidof(Recordset));//创建记录集对象
        pConn->ConnectionString = "Provider=SQLOLEDB;Server=192.168.1.2;Database=test;uid=sa;pwd=Lu123456";
        pConn->Open("", "", "", adConnectUnspecified);//连接ADO
    
        //执行select语句    
        pRst = pConn->Execute("select * from student", NULL, adCmdText);
        while (!pRst->adoEOF)
        {
            ((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("name"));//指定列名
    
            pRst->MoveNext();
        }
    
        pRst->Close();//关闭记录集
        pConn->Close();//关闭数据库的连接
        pRst.Release();//释放
        pConn.Release();
        CoUninitialize();//卸载
    }
    
    
    void CDemoDlg::OnBnClickedButtonClear()
    {
        // TODO: 在此添加控件通知处理程序代码
        ((CListBox*)GetDlgItem(IDC_LIST1))->ResetContent();//清空列表框
    }

    Caesar卢尚宇

    2021年1月9日

  • 相关阅读:
    Java自学二十六天
    Java自学三十四天
    Java自学三十二天
    Java自学三十天
    Java开学考试心得
    Java自学二十九天
    Java自学二十八天
    Java自学三十一天
    Java自学三十三天
    2020年月12日Java学习日记
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/14253001.html
Copyright © 2011-2022 走看看