当前位置: 首页 > >

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

在 VB6.0 数据库程序开发中使用 ADO 和 SQL
摘要:本文用实例说明了通过 ADO 处理数据库表中数据的实现方法,并介绍了利用 SQL 语 句实现对数据作数学统计的方法. 关键词:ADO SQL 数据库 1.引言 在 VB 的应用程序开发中,访问数据库的方法可归纳为两种。一种是通过 DAO 或 ADO 的数据源对表中的数据进行直接操作, 另一种是通过标准的 SQL 语句结合 Connection 对象 对数据库中的数据进行操作, 对表中的数据进行检索和统计。 DAO 是 Visual Basic 5.0 使用 的数据访问技术,它在用于访问 MDB 文件格式的数据库时有较高的效率,但访问如 Oracle 或 SQL Server 这样的非 MDB 文件格式的数据库时,因它基于 Access/Jet 数据库引擎,访问 速度会大大降低。所以 Visual Basic 6.0 推出了 ADO 技术。ADO 中文含意是 ActiveX 数据 对象(ActiveX Data Object),它是一种面向对象的接口。ADO 访问数据库是通过访问 OLE DB 使用程序和 OLE DB 供给程序来进行的,它在封装 OLE DB 的程序中使用了大量的 C

OM 接口,是一种高层的访问技术。它在继承 OLE DB 的同时,大大简化了 OLE DB 的操 作。 此外,ADO 技术可以以 ActiveX 控件的形式出现,被广泛应用于 Microsoft ActiveX 页、Vi sual C++ 和 Visual Basic 的编程。SQL 是管理关系数据库系统的标准语言。每一种关系数 据库如 Access、 SQL Server、 Oracle 等都有它自己特有的 SQL 语言,但它们都支持像 se lect、insert、update、delete、create、drop 等标准语句来完成几乎所有的对数据库的操作.本 文就 ADO 和 SQL 的用法做一些探讨。 2.开发原型 我们为计算机产品经销商开发一个进销存的程序。用 MS Access 数据库,创建的数据库名 叫 ware.mdb. 在这个数据库中,建立表1,表2,表3,表4。 表1 商品明细表: 商品名称 wareDetail 单价 厂商 库存 manifest(ch40) numInLib(int)

商品编号 wareID(ch10) 表2

wareName(ch30)

wPrice(Money)

流水账 wAccount 进货数 出货数 日期 wSold(int) wDate(date)

商品编号 wareID(ch10)

wQuantity(int)

表3 库存表 wLib 总库存数 总库存金额 TotalMoney(Money)

TotalNum(int)

表4 临时表 wInOut 进货数 Quantity, 出货数 Sold

3.ADO 的使用方法. ADO2.0 存在于 Visual Basic 6.0 的两个独立的库中 第一个称为 ADODB, References 对 在 话框中的名字是 Microsoft ActiveX Data Objects 2.0 Library 在这个库中包含了所有的 AD O 对象。对于那些并不需要太多加强的 ADO 资源工程,应该使用 ADOR 库。在 References 对话框中这个库称为 Microsoft ActiveX Data Objects Recordset 2.1 Library 这个库只包含 对 Recordsets 的支持。Visual BASIC 6.0 通过 ADO 控件和 Recordset 对象两种方法来使用 ADO.下面介绍一下 Recordset 对象的使用方法.在 visual basic 中加入如下代码: dim myConnectstr as strng dim myRecordset as New ADODB.recordset myConnectstr="PROVIDER=Microsoft.Jet.OLEDB.4.0;DataSource=" & App.Path & "/ware.m db;Persist Security Info=False" myRecordset.CoursorLocation=AduseClient myRecordset.Open “select * from wDetail ”,myConnectstr,adOpenKeyset,adLockPessimistic 这样就可以对商品明细表追加纪录: myRecordset.AddNew myRecordset.Fields("wareID") = "000001" myRecordset.Fields("wareName") = "Switch 3500" myRecordset.Fields("wPrice") = 4350 myRecordset.Fields("wManufect") = "Cisco" myRecordset.Update 获取表中的纪录数: recordcnt=myRecordset.Recordcount 移动纪录指针 myRecordset.MoveFirst myRecordset.MoveLast myRecordset.MovePrevious myRecordset.MoveNext ?移动到表的第一条纪录 ?移动到表的最后一条纪录 ?移动到表的上一条纪录 ?移动到表的下一条纪录

删除当前纪录 myRecordset.Delete 最后关闭纪录集,释放纪录集变量 myRecordset.Close Set myRecordset=Nothing 4.SQL 的使用 上面所用的方法,只适合于对单个表的简单操作。如果是对表的数据作复杂查询,或数 据统计, 用上述方法就非常不方便。 一般情况下我们用 SQL 语言结合 Connection 对象实现 SQL 语句中最常用的是 Select 语句。该语句用来从数据库表中检索数据或者完成其他一些 功能。 为了使用这条语句你必须知道你要检索的字段名称, 或者直接用星号来检索所有字段。 下面是 Select 语句的基本语法: SELECT[ALL DISTINCT] [TOP xx[PERCENT]] select_list FROM table_name [WHERE {search_criteriajoin_criteria}[{ANDOR search_criteria}]] [GROUP BY [ALL]aggregate_free_expression[,aggregate_free_expression….]] [HAVING search_conditions] [ORDER BY{field_list}[ASCDESC]] 其中: ALL 定义每一行都将返回,包括重复纪录。 DISTINCT 定义只返回不重复的纪录。 TOP 定义你需要的得到的返回纪录的前几条。在数字 xx 后用 PERCENT 来说明只返回前面 百分之几条纪录。 select_list 列出要检索的表的列名。 table_name 列出要检索的表名 search_criteria 列出要检索的表的列名 join_criteria 列出一个表中用来和另一个表的某个列连接的列名 aggregate_fre [page_break]e_expression 是一个不包含聚集的表达式。 Field_list 列出了数据排序的顺序 ASC 定义按照升序排序 DESC 定义按照降序排序。 下面我们来举例说明。 你希望检索商品名细表中的信息可使用如下语句:

SELECT * FROM waredetial 关键字 ORDER BY 要求列名以确定按哪一列排序。这里我们选定按 wareID 排序,如果你希 望按列 wareID 的字母顺序排列可采用下面的代码: SELECT wareID FROM wareDetial ORDER BY wareID 默认是按升序排列如果想按降序排列可用如下代码: SELECT wareID FROM wareDetial ORDER BY wareID DESC 如果你想选择多列,使用下面的语句 SELECT wareID,wareName FROM wareDetial ORDER BY wareID 用 WHERE 关键字来限制选择范围。 如果你想选择 wareDetial 中 wareName 列值为“cisco60 00”的行。你可用下面的代码实现: SELECT * FROM wareDetial WHERE wareName=”cisco6000” ORDER BY wareID 除 了 SELECT 语句,标准 SQL 语句还有 INSERT UPDATE DELETE 等,在此不再作具体介 绍.实际的应用经常要对表中的某列或多列数据进行数学运算,这就需要如 COUNT(),SUM (),AVG(),MAX(),MIN() 等数学函数。下面对这些函数的用法作具体说明。 先建立一个与数据库的连接 dim myConnectstr as strng dim myCnt as New ADODB.connection myConnectstr="PROVIDER=Microsoft.Jet.OLEDB.4.0;DataSource=" & App.Path & "/ware.m db;Persist Security Info=False" myCnt.Open myConnectstr 若要产生某种商品的总进货数以及总出货数可用以下代码: exeStr =”insert into wInOut select sum(wQuantity) as Quantity, sum(wSold) as Sold from wAccount where wareID= ?000001?” 若要产生库存的总数以及总库存金额可用以下代码: exeStr = "insert into wLib select sum(numInlib) as totalNum,sum(numInLib*wPrice) as tot alMoney from wDetail " 运行上述代码: myCnt.Execute exeStr 关闭连接 myCnt.Close 在应用程序的开发中,基于数据库的不同,只在连接的数据源部分作相应的修改,其它的部 分无需改动。

5.结束语 本文所列举的仅仅是 ADO 和 SQL 的用法的一小部分,实际的应用中对 ADO 的操作有 时用 ADO 控件结合 DATAGRID 控件等显示数据也很方便。 参考文献:[1]Visual Basic 6 揭秘 Rob Thayer 著 电子工业出版社 [2]Visual Basic 6.0 程序设计 蒋斌 [3]Microsoft SQL Server 7.0 使用详解 电子工业出版社 Rob Kraft 机械工业出版社

[4]Visual BASIC 5.0 中文版程序设*坛 魏源源等 电子工业出版社




友情链接: year2525网 工作范文网 QS-ISP 138资料网 528200 工作范文网 baothai 表格模版