网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.在VB中设计倒计时程序.
.如何交换鼠标按键.
.HierarchicalFlexGrid控件的使用.
.多用户应用程序中应注意的其它问.
.VisualBasicCommonDialog控件的使.
.VB游戏写作技巧(1)秀图篇.
.显示频道.
.如何访问文本文件(1)----用Micro.
.利用PictureClip进行图像局部处理.
.VisualBasic控件结构概述.
.用VB6.0编写电脑抽奖程序.
.VBCOM基础讲座之类的测试.
.如何使用VB编写自动反安装的程序.
.API函数在VB中的应用.
.VB入门教程之二.
.用VB6编写强力的windows隐藏引擎.
.使用VB设计具有「动感」的命令图.
.VB中远程数据库的访问(1)-数据.
.VB调用IMAGE控件实现图像缩放的一.
.VB.NET实现窗体图标最小化到状态.

用类来编写数据库程序

发表日期:2006-2-27


类模块使VB编程更为简洁。通过封装技术将复杂的代码同程序的其它部分分隔开,并通过方法和属性同程序的其它部分对话。对于类的种种好处,相信大家都非常清楚了。本文主要介绍类在数据库编程方面的应用。

通过类模块的封装,你可以只需要书写一次那些冗长繁人的SQL查询语句,并能方便地同他人分享你的代码。本文向你介绍如何利用类模块创建SQL查询对象。本文用到Northwind数据库。数据访问技术用的是DAO。

工程目的
本工程的目的是要建立一个查询,该查询将从Northwind数据库中返回Beverage供应商的信息。这些信息包括哪种饮料是由哪些供应商供应的。看上去很简单,但你得对三个表进行操作,这三个表分别是Suppliers,Categories和Products,因此你需要写一串很长的SQL查询语句,所以你只希望写一次就够了。
设计类模块
首先确认你已添加了对MicrosoftDAO3.5ObjectLibrary的引用。接下来在工程中添加一个类模块。将该类模块重命名为ClsSQL。让我们先为这个类创建两个新的公共属性,代码如下:

PublicCompanyNameAsString'Objectproperty
PublicCategoryNameAsString'Objectproperty

添加一个公用变量,名为strMsg。该变量用来保存对象返回给用户的信息。
PublicCompanyNameAsString'Objectproperty
PublicCategoryNameAsString'Objectproperty

PublicstrMsgAsString

现在为这个类编写RunQuery方法。
SubRunQuery()

DimstrSQLAsString
DimdbAsDatabase
DimqdfTempAsQueryDef
DimrsResultsAsRecordset

'ConstructtheSQLstring
strSQL="SELECTDISTINCTROWSuppliers.CompanyName,"&"Products.ProductNameFROMSuppliersINNERJOIN"&"(CategoriesINNERJOINProductsONCategories.CategoryID="&"Products.CategoryID)"&"ONSuppliers.SupplierID=Products.SupplierID"&"WHERE(((Suppliers.CompanyName)='"&CompanyName&"')AND"&"((Categories.CategoryName)='"&CategoryName&"'))"

Setdb=OpenDatabase("C:\MSOffice\Access\Samples\Northwind.mdb")

SetqdfTemp=db.CreateQueryDef("")
qdfTemp.SQL=strSQL

SetrsResults=qdfTemp.OpenRecordset(dbOpenSnapshot)
rsResults.MoveFirst

'Enumeratetherecordset
WithrsResults
DoWhileNot.EOF
Debug.Print.Fields(0);"";.Fields(1)
strMsg=strMsg&.Fields(1)&vbCrLf
.MoveNext
Loop
EndWith

rsResults.Close
qdfTemp.Close

EndSub

现在让我们来简单地分析一下上面的代码。在上面的代码中数据库的路径是用的绝对路径。如果Northwind数据库的路径同你机器上的不同,你需要修改这个路径,以便程序能找到这个数据库。
SQL代码是在Access中建立好然后粘贴到程序中来的。这样做不仅免去你书写代码的麻烦,而且还不容易出错。在粘贴完之后,将原来在SQL代码中的"BigfootBreweries"和"Beverages"用公共变量CompanyName和CategoryName替换掉。

在定义了QueryDef之后,程序枚举记录集。记录集的信息不仅在立即窗口中显示出来,同时被写入strMsg变量中。

在结束对类模块的编码之前,我们还需要对类模块的Terminate事件编写代码。将下面的代码放到该事件中。

PrivateSubClass_Terminate()

MsgBoxstrMsg,Title:="BeverageResultsfor"&CompanyName,buttons:=vbExclamation

EndSub


现在我们已结束了对类模块的编程。接下来在窗体中添加一个命令按钮。将该命令按钮的Caption属性设置为&RunQuery。将下面的代码放在命令按钮的鼠标单击事件中。
PrivateSubCommand1_Click()

DimobjSQLAsClsSQL

'Settheobjectvariable
SetobjSQL=NewClsSQL

'Setpropertiesofthenewobject
WithobjSQL
.CompanyName="BigfootBreweries"
.CategoryName="Beverages"
EndWith

'Retrievetheproperties
Debug.PrintobjSQL.CompanyName
Debug.PrintobjSQL.CategoryName

'Callamethodoftheobject
objSQL.RunQuery

'Destroytheobject
SetobjSQL=Nothing

EndSub


在上面的语句中,我们首先定义了一个对象变量,接下来将这个对象变量初始化为我们刚建立的类的一个实例。我们也可以用下面这一条语句来实现。
DimobjSQLAsNewClsSQL

紧接着我们设置该对象的属性。CompanyName="BigfootBreweries"和CategoryName="Beverages",将这两个值在立即窗口中显示出来。这样做仅仅为了验证而已。然后调用对象的RunQuery方法。
objSQL.RunQuery

最后释放该对象,触发对象的Terminate事件,弹出消息框,显示查询结果。
MsgBoxstrMsg,Title:="BeverageResultsfor"&CompanyName,buttons:=
vbExclamation

结论
现在你已对用类模块进行数据库编程的好处有了初步的认识。当然你也可以用标准模块来实现同样的功能。但是用标准模块远不如用类模块简洁。用类模块,你可以为每个查询初始化一个新的对象,而复杂的SQL代码则被封装在类中。用标准模块,你必须将控制权交给模块。最后,类模块更易于移植。->

上一篇:在VB中更改SQLServer数据库结构 人气:3562
下一篇:锁住数据库中的表 人气:3042
浏览全部Visual Basic的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐