MFC学习记录2之Mini系统1

一、浏览记录:

1.创建对话框窗口

添加一个listControl ,并关联一个变量“m_list”

2.在头文件“MiniMsDlg.h”导入msado15.dll动态链接库文件

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

3.编写函数接口:

   3-1:定义连接对象和记录集对象    

          _ConnectionPtr m_pConnection;
          _RecordsetPtr m_pRecordset;

   3-2:连接数据库Access数据库

    

 

  在OnInitDialog函数中添加如下代码:

              

AfxOleInit();

    LV_COLUMN listColumn;
    TCHAR *listTitle[2]={_T("学号"),_T("姓名")};
    int intColCx[2]={100,120};
    listColumn.mask=LVCF_FMT|LVCF_TEXT|LVCF_WIDTH|LVCF_SUBITEM;
    listColumn.fmt=LVCFMT_LEFT;
    for(int ncol=0;ncol<2;ncol++){
        listColumn.cx=intColCx[ncol];
        listColumn.iSubItem=ncol;
        listColumn.pszText=listTitle[ncol];
        m_list.InsertColumn(ncol,&listColumn);
    }

    m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);

    m_pConnection.CreateInstance(__uuidof(Connection));
    CString strConn=_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\demo\\myAccess.mdb");
    
    try{
        m_pConnection->Open((_bstr_t)strConn,_T(""),_T(""),adModeUnknown);
    }catch(_com_error &e){

        AfxMessageBox((LPCTSTR)e.Description());
        m_pConnection=NULL;
        return TRUE;
    }
    catch(...){
        AfxMessageBox(_T("未知错误"));
        m_pConnection=NULL;
        return TRUE;
    }


    //记录集对象
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    LPCTSTR lpSql=_T("select * from Students order by StudentID");
    m_pRecordset->Open((_variant_t)lpSql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
    if(m_pRecordset==NULL){
    
        AfxMessageBox(_T("读取数据库失败"));
        return TRUE;
    }

    m_list.DeleteAllItems();

    int nitem=0;
    _variant_t id,name;
    CString strId,strName;
    while(!m_pRecordset->adoEOF){
        id=m_pRecordset->GetCollect(_T("StudentId"));
        name=m_pRecordset->GetCollect(_T("StudentName"));

        strId.Format(_T("%d"),id.intVal);
        strName=(LPCTSTR)_bstr_t(name);
        //AfxMessageBox(_T("11111"));
        m_list.InsertItem(nitem,strId);
        m_list.SetItemText(nitem,1,strName);
        m_list.SetItemData(nitem,id.intVal);
        nitem++;
        m_pRecordset->MoveNext();
    }

    m_pRecordset->Close();

 

以上代码亲测可行。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值