MFC学习记录2之Mini系统1

tech2022-08-15  142

一、浏览记录:

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();

 

以上代码亲测可行。

最新回复(0)