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日

  • 相关阅读:
    codevs 2632 非常好友
    codevs 1213 解的个数
    codevs 2751 军训分批
    codevs 1519 过路费
    codevs 1503 愚蠢的宠物
    codevs 2639 约会计划
    codevs 3369 膜拜
    codevs 3135 River Hopscotch
    数论模板
    JXOJ 9.7 NOIP 放松模拟赛 总结
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/14253001.html
Copyright © 2011-2022 走看看