在VB6.0数据库程序开发中使用ADO 和SQL_第1页
在VB6.0数据库程序开发中使用ADO 和SQL_第2页
在VB6.0数据库程序开发中使用ADO 和SQL_第3页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在VB6.0数据库程序开发中使用ADO和SQL

摘要:本文用实例说明了通过ADO处理数据库表中数据的实现方法,并介绍了利用SQL语句实现对数据作数学统计的方法.关键词:ADOSQL数据库1.引言

在VB的应用程序开发中,访问数据库的方法可归纳为两种。一种是通过DAO或ADO的数据源对表中的数据进行直接操作,另一种是通过标准的SQL语句结合Connection对象对数据库中的数据进行操作,对表中的数据进行检索和统计。DAO是VisualBasic5.0使用的数据访问技术,它在用于访问MDB文件格式的数据库时有较高的效率,但访问如Oracle或SQLServer这样的非MDB文件格式的数据库时,因它基于Access/Jet数据库引擎,访问速度会大大降低。所以VisualBasic6.0推出了ADO技术。ADO中文含意是ActiveX数据对象(ActiveXDataObject),它是一种面向对象的接口。ADO访问数据库是通过访问OLEDB使用程序和OLEDB供给程序来进行的,它在封装OLEDB的程序中使用了大量的COM接口,是一种高层的访问技术。它在继承OLEDB的同时,大大简化了OLEDB的操作。此外,ADO技术可以以ActiveX控件的形式出现,被广泛应用于MicrosoftActiveX页、VisualC++和VisualBasic的编程。SQL是管理关系数据库系统的标准语言。每一种关系数据库如Access、SQLServer、Oracle等都有它自己特有的SQL语言,但它们都支持像select、insert、update、delete、create、drop等标准语句来完成几乎所有的对数据库的操作.本文就ADO和SQL的用法做一些探讨。2.开发原型我们为计算机产品经销商开发一个进销存的程序。用MSAccess数据库,创建的数据库名叫ware.mdb.在这个数据库中,建立表1,表2,表3,表4。表1

商品明细表:

wareDetail商品编号

商品名称

单价

厂商

库存wareID(ch10)

wareName(ch30)

wPrice(Money)

manifest(ch40)

numInLib(int)表2

流水账wAccount商品编号

进货数

出货数

日期wareID(ch10)

wQuantity(int)

wSold(int)

wDate(date)表3库存表wLib总库存数

总库存金额TotalNum(int)

TotalMoney(Money)表4临时表wInOut进货数

出货数Quantity,

Sold3.ADO的使用方法.ADO2.0存在于VisualBasic6.0的两个独立的库中第一个称为ADODB,在References对话框中的名字是MicrosoftActiveXDataObjects2.0Library在这个库中包含了所有的ADO对象。对于那些并不需要太多加强的ADO资源工程,应该使用ADOR库。在References对话框中这个库称为MicrosoftActiveXDataObjectsRecordset2.1Library这个库只包含对Recordsets的支持。VisualBASIC6.0通过ADO控件和Recordset对象两种方法来使用ADO.下面介绍一下Recordset对象的使用方法.在visualbasic中加入如下代码:

dimmyConnectstrasstrng

dimmyRecordsetasNewADODB.recordsetmyConnectstr="PROVIDER=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\ware.mdb;PersistSecurityInfo=False"myRecordset.CoursorLocation=AduseClientmyRecordset.Open“select*fromwDetail”,myConnectstr,adOpenKeyset,adLockPessimistic这样就可以对商品明细表追加纪录:myRecordset.AddNewmyRecordset.Fields("wareID")="000001"myRecordset.Fields("wareName")="Switch3500"myRecordset.Fields("wPrice")=4350myRecordset.Fields("wManufect")="Cisco"myRecordset.Update获取表中的纪录数:recordcnt=myRecordset.Recordcount移动纪录指针myRecordset.MoveFirst‘移动到表的第一条纪录myRecordset.MoveLast‘移动到表的最后一条纪录myRecordset.MovePrevious

‘移动到表的上一条纪录myRecordset.MoveNext‘移动到表的下一条纪录删除当前纪录myRecordset.Delete最后关闭纪录集,释放纪录集变量myRecordset.CloseSetmyRecordset=Nothing4.SQL的使用

上面所用的方法,只适合于对单个表的简单操作。如果是对表的数据作复杂查询,或数据统计,用上述方法就非常不方便。一般情况下我们用SQL语言结合Connection对象实现SQL语句中最常用的是Select语句。该语句用来从数据库表中检索数据或者完成其他一些功能。为了使用这条语句你必须知道你要检索的字段名称,或者直接用星号来检索所有字段。下面是Select语句的基本语法:

SELECT[ALL|DISTINCT][TOPxx[PERCENT]]select_list

FROMtable_name

[WHERE{search_criteria|join_criteria}[{AND|ORsearch_criteria}]]

[GROUPBY[ALL]aggregate_free_expression[,aggregate_free_expression….]]

[HAVINGsearch_conditions]

[ORDERBY{field_list}[ASC|DESC]]其中:ALL定义每一行都将返回,包括重复纪录。DISTINCT定义只返回不重复的纪录。TOP定义你需要的得到的返回纪录的前几条。在数字xx后用PERCENT来说明只返回前面百分之几条纪录。select_list列出要检索的表的列名。table_name列出要检索的表名search_criteria列出要检索的表的列名join_criteria列出一个表中用来和另一个表的某个列连接的列名aggregate_free_expression是一个不包含聚集的表达式。Field_list列出了数据排序的顺序ASC定义按照升序排序DESC定义按照降序排序。下面我们来举例说明。你希望检索商品名细表中的信息可使用如下语句:

SELECT*FROMwaredetial关键字ORDERBY要求列名以确定按哪一列排序。这里我们选定按wareID排序,如果你希望按列wareID的字母顺序排列可采用下面的代码:SELECTwareIDFROMwareDetialORDERBYwareID默认是按升序排列如果想按降序排列可用如下代码:SELECTwareIDFROMwareDetialORDERBYwareIDDESC如果你想选择多列,使用下面的语句SELECTwareID,wareNameFROMwareDetialORDERBYwareID用WHERE关键字来限制选择范围。如果你想选择wareDetial中wareName列值为“cisco6000”的行。你可用下面的代码实现:

SELECT*FROMwareDetialWHEREwareName=”cisco6000”ORDERBYwareID除了SELECT语句,标准SQL语句还有INSERTUPDATEDELETE等,在此不再作具体介绍.实际的应用经常要对表中的某列或多列数据进行数学运算,这就需要如COUNT(),SUM(),AVG(),MAX(),MIN()等数学函数。下面对这些函数的用法作具体说明。先建立一个与数据库的连接dimmyConnectstrasstrngdimmyCntasNewADODB.connectionmyConnectstr="PROVIDER=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\ware.mdb;PersistSecurityInfo=False"myCnt.OpenmyConnectstr若要产生某种商品的总进货数以及总出货数可用以下代码:exeStr=”insertintowInOutselectsum(wQuantity)asQuantity,sum(wSold)asSoldfromwAccountwherewareID=‘000001’”若要产生库存的总数以及总库存金额可用以下代码:exeStr="insertintowLibselectsum(numInlib)astotalNu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论