• MFC连接Access2007数据库


    // TODO: 在此添加额外的初始化代码

    //初始化ADO环境

    if (!AfxOleInit())
    	{
    		AfxMessageBox(L"OLE初始化失败");
    		return FALSE;
    	}
    

      



    //设置ListView例标题

    m_list.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
    m_list.InsertColumn(0, L"ID", LVCFMT_CENTER, 80);
    m_list.InsertColumn(1, L"mName", LVCFMT_CENTER, 80);
    m_list.InsertColumn(2, L"mSex", LVCFMT_CENTER, 80);
    m_list.InsertColumn(3, L"mAge", LVCFMT_CENTER, 80);
    m_list.InsertColumn(4, L"mTel", LVCFMT_CENTER, 120);

    //连接数据库
    m_pConnection.CreateInstance(__uuidof(Connection));

    try
    {
      //下面这些字符串弄了好久才弄对,主要是文件路径的问题吧,现在也没弄明白,放在工程Debug目录下就连接不上.

      //_bstr_t connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myDate1.accdb;Persist Security Info=False";  //这句就出错,查了好久哦,都想放弃了.


      _bstr_t connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\AccessData2007\myDate1.accdb;Persist Security Info=False";

      _bstr_t dataName = "Admin";
      _bstr_t dataPass = "";
      
      HRESULT hr=m_pConnection->Open(connStr,dataName,dataPass,adModeUnknown);
      //MessageBox(L"数据连接成功");
    }
    catch (_com_error e)
    {
      AfxMessageBox( e.ErrorMessage());
      return FALSE;
    }

    //连接记录集
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    try
    {
      _variant_t sql = "select * from myTable";

      HRESULT hret = m_pRecordset->Open(
                sql,
                m_pConnection.GetInterfacePtr(),
                adOpenDynamic,
                adLockOptimistic,
                adCmdText
                );
      //MessageBox(L"连接成功");

    }
    catch (_com_error* e)
    {
      MessageBox(e->ErrorMessage());
      return FALSE;
    }

    //加载数据到ListView控件中
    _variant_t var;
    CString strTmp;
    for (int i=0;!m_pRecordset->adoEOF;i++)
    {
      var = m_pRecordset->GetCollect(_T("ID"));
      strTmp = (LPCTSTR)_bstr_t(var);
      m_list.InsertItem(i, strTmp);

      var = m_pRecordset->GetCollect(_T("mName"));
      strTmp = (LPCTSTR)_bstr_t(var);
      m_list.SetItemText(i, 1, strTmp);

      var = m_pRecordset->GetCollect(_T("mSex"));
      strTmp = (LPCTSTR)_bstr_t(var);
      m_list.SetItemText(i, 2, strTmp);

      var = m_pRecordset->GetCollect(_T("mAge"));
      strTmp = (LPCTSTR)_bstr_t(var);
      m_list.SetItemText(i, 3, strTmp);

      var = m_pRecordset->GetCollect(_T("mTel"));
      strTmp = (LPCTSTR)_bstr_t(var);
      m_list.SetItemText(i, 4, strTmp);

      m_pRecordset->MoveNext();
    }
    //关闭记录集和数据库连接

    m_pRecordset->Close();
    m_pRecordset.Release();
    m_pRecordset = NULL;
    if (m_pConnection->State)
    {
      m_pConnection->Close();
    }
    m_pConnection = NULL;

    //关闭记录集和数据库连接
    
    	m_pRecordset->Close();
    	m_pRecordset.Release();
    	m_pRecordset = NULL;
    	if (m_pConnection->State)
    	{
    		m_pConnection->Close();
    	}
    	m_pConnection = NULL;
    

      

    签名:GreenLeaf1976
  • 相关阅读:
    CSS3 选择器——伪类选择器详细讲解
    关于endnote与word或wps关联的问题
    高通量测序中,reads、contigs、scaffold之间的联系
    转录组中 实验设计 的相关问题
    RNA-Seq分析软件HTSeq的安装
    bash下特殊字符的含义
    常见的测序名词解释
    RNA-seq数据分析注意事项
    RNASeq中常见的分析流程
    WGS/WES/RNAseq/CHIP-seq之间的差别
  • 原文地址:https://www.cnblogs.com/greenleaf1976/p/12131203.html
Copyright © 2020-2023  润新知