《ado连接 access 数据库.docx》由会员分享,可在线阅读,更多相关《ado连接 access 数据库.docx(10页珍藏版)》请在第壹文秘上搜索。
1、rename(EOF*.*adoEOF,)其中路径名可以依据自己系统安装的ADO支持文件的路径来自行设定。当编译涔遇到:tirrorl语句时,它会为引用祖件类鞭库中的接口生成包装类,Uiaurl语句事实上相当于执行了API涌数1.oadType1.ibO.轲mport语句会在工程可执行程序输出书目中产生两个文件.分别为*.tlh(类型库头文件)及*.t1i(类型库实现文件),它们分别为每一个接口产生智能指针.)-为各种接口方法、枚举类型,C1.SlD等进展*明,创立一系列包装方法。语句n。MmeSPaCe说明ADo对象不运用命名空间,rcnOpen(Provider=Microsoft.Jet
2、.(M.KDB.4.0;DataSource=Demo.mdb,adMx!eUnknom):catch(_com_errore)(AfXYeSSageBOXe数据库连接失败,确认数据库Des.mdb是否在当前路径下!”);returnFA1.SE:1 关闭一个库连接.假如连接状态有效,那么用CIOSe方法关闭它并赋于它空值。代码如下所示:ifState)m_pConnection-Close();_pConnection=NU1.1.;2 ._RecordsePtr智能指针,可以用来翻开库内数据表,并可以对表内的记录、字段等进展各种操作。1翻开数据我.翔开库内表名为I)CmCTabIe的数据表
3、,代码如下:RccordsctPlrIiipRecordset:/在操作中建议语句中要常用try.catchO来辅状错误信息,/因为它有时会常常出现一些意想不到的用误。Jinxzhouxutry(m_PReCOrdSet-X)pen(SE1.ECT*FROMBesTable./giftDe三oTable表中全部字段thepp._PcOnneCtion.GetInterfacePtr0./获得森接库的IDiSPatCh指针adOcnDyramic1adl.OckOptimistic,adC三dTcxt):)catch(_com_error*c)(AfxMcssaRcBox(c-ErrorMess
4、aeO):)读取表内数据将表内数据全部读出并显示在列衣框内,mAccess1.ist为列表框的成员变革名,假如没有遇到衣完毕标记adoEOF,那么用GetC。IleCM字段名)或1.PRCeordSel-Fields-GelIlem(字段名)-*aluc方法,来获得当前记录指针所指的字段值,然后再用MoveNextU方法移动到下一条记录位置.代码如下所示:.variant,var;CStringStrNaroe,strge;if(!npRecordset-BOF)mpRecordsetMoveFirst0:else(AfXMeSSageBOXr表内数据为空”);return;/读入库中各字段并
5、参与列表框中while。m_PReCordsetadoEOF)(Var-m_PReCordSet-GetColIect(Name):if(var.vt!=VT_NU1.1.)strNa三e=(1.PCSTR)_bstr_t(var):var=m_pRecordset-GetColled(Aer):if(var.vt!=VT_NU1.1.)StrAge=(1.PCSTR)_bstr_t(var):m_Access1.ist.AddString(StrNaBe+”*+strAe):m_pRecordset-MveNextO:/坡认列表指向第一项,同时移动记录指针并显示m_Access1.ist.S
6、otCurSel(0);)CalChjeon1.error*e)(AfXMeSSageBOX(e-ErrorMessage0);)1插入-记录.可以先用AddNeW()方法新增一个空记录,再用PUtCOlIeCt(字段名,值)输入每个字段的位,最终用UPdaIeo更新到库中数据既可.其中变htmjm和mAge分别为姓名及年龄编辑框的成员变录名.代码所下所示:try(/写入各字段值111.pRecordset-AddNer():mRecordset-PutColIect(*Na11M?,variant_t(m_Name):mRecordset-PutColled(Age,atol(m_Age):
7、mpRecordset-Update0;AfXMeSSageBoX插入胜利!”):catch(_com_error*e)AfXMeSSageBoX(e-ErrorMessage():)1移动记录指针,移动记录指针可以通过Y。YeFirS1()方法移动到第一条记录、Movc1.ast0方法移动到G终一条记录,MovePreviousO方法移动到当前记录的前一条记录、MoYeNeXtO方法移动到当前记录的下一条记录.但我们行时常常须要随意移动记录指针到随意记录位置时,可以运用乂。(记录号)方法来实现,留意:MnVe()方法是和时于当前记录来移动指针位置的,正值向后移动、负值向前移动,如:Move(
8、3),当前记录是3时,它将从记录3开场往后再移动3条记录位置,代码如卜所示:try(intcurSe1=rnccessl.ist.GetCurSel():/先将指针移向第一条记录,然后就可以相对笫一条记录来随意移动记录指针m_pRecordset-MoveFirst0:mrRccordscl-Move(long(curScl):)catch(_com_errore)(AfxMessageBox(e-ErrorMessage():)修改记录中字段值,uj以将记录指针移动到要修改记录的位置处,F腌用PUtCOIleCt(字段名,值)符新他写入并UPdate()更新数据库既可.可以用上面方法移动记录
9、指针,怪改字段伯代码如下所示:Iry(/假设对其次条记录进展修改m_pRecordset-MoveFirst0;mRccordsct-Movc(l);从O开场mpKecordset-PutCollect(*,a11H*,variant/(m_Name):m_rRecordsct-PutColled(rge*,atol(m-Ae);mjecordset-UpdHte();)CatChjCOm_CrrOre)(AfxMessageBox(e-ErrorMessage():)1捌除记录。删除记录和上面修改记录的操作类似,先将记录指针移动到要修改记录的位置,干脆用DeIeteo方法删除它并用IPdat
10、e()来更新数据库既可.代码如下所示:try(/暇设删除其次条记录mpRecordset-MoveFirst();m_pRecordsetDelete(adffectCurrent):/参数udFfuCtCUrrent为删除当前记录in_pRccordsel-Updatc();)catch(_com_crrorc)(AfxMessacBx(e-ErrorMvssaoO);)关闭记录集,干脆用ClOSe方法关闭记录集并献于其空值.代码如下所示:,Rccordsct-Close();BjjRecordset=NU1.1.;3.CnnmandPtr智能指针,可以运用ConnectiQnPIr或_Re
11、ccrdSetPtr来执行任务,定义输出卷数,执行存储过程或SQ1.语句1 执行SQ1.谙句.先创立一个一COn三andPtr实例指针再将库连接和SQ1.谱句做为参数,执行EXeCUte。方法既可,代码如下所示:CunnandPtrm_pC(xnand;npComnand.CreateInstance(Uuidof(Coranand): Comand-ActiVcConncctin=m_pConnection;/将库连接忸于它B_pConroand-Co(niiandText=SE1.ECT/FROMDeBoTable*;/SQ1.ifi句 Rccrdset=m_pCoExecute(Nl1.
12、1.NU1.1.,adCmcITcxt):/执行SQ1.语句,返回记录集1 执行存储过程.执行存谛过程的操作和上面执行SQ1.谱句类似,不同点仅是COBmandTeXt参数中不再是W1.语句,而是存储过程的名字,如kmo.另一个不同点就是在EXeCUte()中参数由adCmdText(执行SQ1.语句),t为adC三dSToredProc来执行存储过程,假如存储过程中存在输入、输出参数的话,须要运用到另一个智能指针ParamCterPtr来逐次设置要输入、输出的参数信息,并将其赋于COn三ndPtr中ParnIneterS参数来传递信息.有爱好的读者可以行直找相关书籍或MSl*.执行存储过程的代码如下所示:ConeandPtrinCo11三arl;apCn11nand.Createlnstance(Uuidof(Coinnand):pCornnActiVcConnection=11jConneclion;/将库连接赋于它pCo11rnand-CcxnaandText=Dem。”:三pComnand-Execule(MI1.1.,NU1.1.adCmdStoredProc)