资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
在VB6.0数据库程序开发中使用ADO 和SQL摘要:本文用实例说明了通过AD处理数据库表中数据的实现方法,并介绍了利用SQL语句实现对数据作数学统计的方法关键词:ADSQL数据库1引言在VB的应用程序开发中,访问数据库的方法可归纳为两种。一种是通过DA或AD的数据源对表中的数据进展直接操作,另一种是通过标准的SQL语句结合nnetin对象对数据库中的数据进展操作,对表中的数据进展检索和统计。DA是VisualBasi5.0使用的数据访问技术,它在用于访问DB文件格式的数据库时有较高的效率,但访问如rale或SQLServer这样的非DB文件格式的数据库时,因它基于Aess/Jet数据库引擎,访问速度会大大降低。所以VisualBasi6.0推出了AD技术。AD中文含意是AtiveX数据对象(AtiveXDatabjet),它是一种面向对象的接口。AD访问数据库是通过访问LEDB使用程序和LEDB供应程序来进展的,它在封装LEDB的程序中使用了大量的接口,是一种高层的访问技术。它在继承LEDB的同时,大大简化了LEDB的操作。此外,AD技术可以以AtiveX控件的形式出现,被广泛应用于irsftAtiveX页、Visual+和VisualBasi的编程。SQL是管理关系数据库系统的标准语言。每一种关系数据库如Aess、SQLServer、rale等都有它自己特有的SQL语言,但它们都支持像selet、insert、update、delete、reate、drp等标准语句来完成几乎所有的对数据库的操作本文就AD和SQL的用法做一些讨论。开发原型我们为计算机产品经销商开发一个进销存的程序。用SAess数据库,创立的数据库名叫are.db.在这个数据库中,建立表,表,表,表。表1商品明细表:areDetail商品编号商品名称单价厂商库存arEiD(h10)areNae(h30)Prie(ney)anifest(h40)nuInLib(int)表2流水账Aunt商品编号进货数出货数日期areID(h10)Quantity(int)Sld(int)Date(date)表库存表Lib总库存数总库存金额TtalNu(int)Ttalney(ney)表临时表Inut进货数出货数Quantity,SldAD的使用方法AD2.0存在于VisualBasi6.0的两个独立的库中第一个称为ADDB,在Referenes对话框中的名字是irsftAtiveXDatabjets2.0Library在这个库中包含了所有的AD对象。对于那些并不需要太多加强的AD资源工程,应该使用ADR库。在Referenes对话框中这个库称为irsftAtiveXDatabjetsRerdset2.1Library这个库只包含对Rerdsets的支持。VisualBASI6.0通过AD控件和Rerdset对象两种方法来使用AD下面介绍一下Rerdset对象的使用方法在visualbasi中参加如下代码:diynnetstrasstrngdiyRerdsetasNeADDB.rerdsetynnetstr=PRVIDER=irsft.Jet.LEDB.4.0;DataSure=App.Pathare.db;PersistSeurityInf=FalseyRerdset.ursrLatin=AduselientyRerdset.pen“selet*frDetail,ynnetstr,adpenKeyset,adLkPessiisti这样就可以对商品明细表追加纪录:yRerdset.AddNeyRerdset.Fields(areID)=000001yRerdset.Fields(areNae)=Sith3500yRerdset.Fields(Prie)=4350yRerdset.Fields(anufet)=isyRerdset.Update获取表中的纪录数:rerdnt=yRerdset.Rerdunt挪动纪录指针yRerdset.veFirst挪动到表的第一条纪录yRerdset.veLast挪动到表的最后一条纪录yRerdset.vePrevius挪动到表的上一条纪录yRerdset.veNext挪动到表的下一条纪录删除当前纪录yRerdset.Delete最后关闭纪录集,释放纪录集变量yRerdset.lseSetyRerdset=NthingSQL的使用上面所用的方法,只合适于对单个表的简单操作。假如是对表的数据作复杂查询,或数据统计,用上述方法就非常不方便。一般情况下我们用SQL语言结合nnetin对象实现SQL语句中最常用的是Selet语句。该语句用来从数据库表中检索数据或者完成其他一些功能。为了使用这条语句你必须知道你要检索的字段名称,或者直接用星号来检索所有字段。下面是Selet语句的根本语法:SELETALL|DISTINTTPxxPERENTselet_listFRtable_naeHEREsearh_riteria|jin_riteriaAND|Rsearh_riteriaGRUPBYALLaggregate_free_expressin,aggregate_free_expressin.HAVINGsearh_nditinsRDERBYfield_listAS|DES其中:ALL定义每一行都将返回,包括重复纪录。DISTINT定义只返回不重复的纪录。TP定义你需要的得到的返回纪录的前几条。在数字xx后用PERENT来说明只返回前面百分之几条纪录。selet_list列出要检索的表的列名。table_nae列出要检索的表名searh_riteria列出要检索的表的列名jin_riteria列出一个表中用来和另一个表的某个列连接的列名aggregate_free_expressin是一个不包含聚集的表达式。Field_list列出了数据排序的顺序AS定义按照升序排序DES定义按照降序排序。下面我们来举例说明。你希望检索商品名细表中的信息可使用如下语句:SELET*FRaredetial关键字RDERBY要求列名以确定按哪一列排序。这里我们选定按areID排序,假如你希望按列areID的字母顺序排列可采用下面的代码:SELETareIDFRareDetialRDERBYareID默认是按升序排列假如想按降序排列可用如下代码:SELETareIDFRareDetialRDERBYareIDDES假如你想选择多列,使用下面的语句SELETareID,areNaeFRareDetialRDERBYareID用HERE关键字来限制选择范围。假如你想选择areDetial中areNae列值为“is6000的行。你可用下面的代码实现:SELET*FRareDetialHEREareNae=is6000RDERBYareID除了SELET语句,标准SQL语句还有INSERTUPDATEDELETE等,在此不再作详细介绍实际的应用经常要对表中的某列或多列数据进展数学运算,这就需要如UNT(),SU(),AVG(),AX(),IN()等数学函数。下面对这些函数的用法作详细说明。先建立一个与数据库的连接diynnetstrasstrngdiyntasNeADDB.nnetinynnetstr=PRVIDER=irsft.Jet.LEDB.4.0;DataSure=App.Pathare.db;PersistSeurityInf=Falseynt.penynnetstr假设要产生某种商品的总进货数以及总出货数可用以下代码:exeStr=insertintInutseletsu(Quantity)asQuantity,su(Sld)asSldfrAunthereareID=000001假设要产生库存的总数以及总库存金额可用以下代码:exeStr=insertintLibseletsu(nuInlib)asttalNu,su(nuInLib*Prie)asttalneyfrDetail运行上述代码:ynt.ExeuteexeStr关闭连接ynt.lse在应用程序的开发中,基于数据库的不同,只在连接的数据源局部作相应的修改,其它的局部无需改动。完毕语本文所列举的仅仅是AD和SQL的用法的一小局部,实际的应用中对AD的操作有时用AD控件结合DATAGRID控件等显示数据也很方便。参考文献:1VisualBasi6揭秘RbThayer著电子工业出版社2VisualBasi6.0程序设计蒋斌电子工业出版社3irsftSQLServer7.0使用详解RbKraft机械工业出版社4VisualBASI5.0中文版程序设计教程魏源源等电子工业出版社
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号