资源描述:
《使用ADO及listCtrl控件操作ACCESS数据库.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、使用ADO及listCtrl控件操作ACCESS数据库第1步:显示数据记录●创建基于对话框的应用程序AdoList。●加入ListControl控件,设置属性如下:ID值为IDC_LIST1View列表选ReportSingleselection选中(限制列表项单选)●在StdAfx.h文件加入下面命令:#import"C:ProgramFilesCommonFilesSystemadomsado15.dll"no_namespacerename("EOF","adoEOF")●使用类向导为IDC_LIST1列表视控件绑定控件型变量m_list●在Cad
2、oListDlg类添加下面三个成员变量_ConnectionPtrm_pConnection;_RecordsetPtrm_pRecordset;●在BOOLCAdoListDlg::OnInitDialog()窗口初始化函数中加入下面命令://TODO:AddextrainitializationhereCoInitialize(NULL);try{HRESULThr;m_pConnection.CreateInstance("ADODB.Connection");hr=m_pConnection->Open("Provider=Microsoft.Jet.OL
3、EDB.4.0;DataSource=stu1.mdb","","",adModeUnknown);}catch(_com_errore){CStringerrormessage;errormessage.Format("连接数据库失败!错误信息:%s",e.ErrorMessage());AfxMessageBox(errormessage);}try{m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open("SELECT*FROMstudent",m_pConnection.G
4、etInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);}catch(_com_errore){CStringerrormessage;errormessage.Format("连接数据库表失败!错误信息:%s",e.ErrorMessage());AfxMessageBox(errormessage);}m_list.SetExtendedStyle(LVS_EX_FLATSB
5、LVS_EX_FULLROWSELECT//点击一项时,整行都为选中状态
6、LVS_EX_GRIDLINES);//设置网
7、格线m_list.InsertColumn(0,"学号",LVCFMT_LEFT,80);m_list.InsertColumn(1,"姓名",LVCFMT_LEFT,50);m_list.InsertColumn(2,"年龄",LVCFMT_RIGHT,36);disp();//显示数据库数据记录returnTRUE;//returnTRUEunlessyousetthefocustoacontrol●在CAdoListDlg类添加下面成员函数disp()(并在类定义中声明)显示数据库记录:voidCAdoListDlg::disp(){m_list.Delet
8、eAllItems();inti=0;m_pRecordset->MoveFirst();while(!m_pRecordset->adoEOF)//adoEOF是末尾标识{_variant_ttheValue;CStringid,name,age;theValue=m_pRecordset->GetCollect("StuID");//获取学号if(theValue.vt!=VT_NULL)id=(char*)_bstr_t(theValue);theValue=m_pRecordset->GetCollect("StuName");//获取姓名if(theVa
9、lue.vt!=VT_NULL)name=(char*)_bstr_t(theValue);theValue=m_pRecordset->GetCollect("age");//获取年龄if(theValue.vt!=VT_NULL)age.Format("%d",theValue.iVal);m_list.InsertItem(i,"");m_list.SetItemText(i,0,id);m_list.SetItemText(i,1,name);m_list.SetItemText(i,2,age);m_pRecordset->MoveNext();//移动
10、到下一行(