用类来编写数据库程序
类模块使VB编程更为简洁。通过封装技术将复杂的代码同程序的其它部分分隔开,
并通过方法和属性同程序的其它部分对话。对于类的种种好处,相信大家都非常清
楚了。本文主要介绍类在数据库编程方面的应用。
通过类模块的封装,你可以只需要书写一次那些冗长繁人的SQL查询语句,并能方
便地同他人分享你的代码。本文向你介绍如何利用类模块创建SQL查询对象。本文
用到Northwind数据库。数据访问技术用的是DAO。
工程目的
本工程的目的是要建立一个查询,该查询将从Northwind数据库中返回Beverage供
应商的信息。这些信息包括哪种饮料是由哪些供应商供应的。看上去很简单,但你
得对三个表进行操作,这三个表分别是Suppliers, Categories和Products, 因此
你需要写一串很长的SQL查询语句,所以你只希望写一次就够了。
设计类模块
首先确认你已添加了对Microsoft DAO 3.5 Object Library的引用。接下来在工程
中添加一个类模块。将该类模块重命名为ClsSQL。
让我们先为这个类创建两个新的公共属性,代码如下:
Public CompanyName As String Object property
Public CategoryName As String Object property
添加一个公用变量,名为strMsg。该变量用来保存对象返回给用户的信息。
Public CompanyName As String Object property
Public CategoryName As String Object property
Public strMsg As String
现在为这个类编写RunQuery方法。
Sub RunQuery()
Dim strSQL As String
Dim db As Database
Dim qdfTemp As QueryDef
Dim rsResults As Recordset
Construct the SQL string
strSQL = "SELECT DISTINCTROW Suppliers.CompanyName, " & _
"Products.ProductName FROM Suppliers INNER JOIN " & _
"(Categories INNER JOIN Products ON Categories.CategoryID = " & _
"Products.CategoryID) " & _
"ON Suppliers.SupplierID = Products.SupplierID " & _
"WHERE (((Suppliers.CompanyName)=" & CompanyName & ") AND " & _
"((Categories.CategoryName)=" & CategoryName & "))"
Set db = OpenDatabase("C:MSOfficeAccessSamplesNorthwind.mdb")
Set qdfTemp = db.CreateQueryDef("")
qdfTemp.SQL = strSQL
Set rsResults = qdfTemp.OpenRecordset(dbOpenSnapshot)
rsResults.MoveFirst
Enumerate the recordset
With rsResults
Do While Not .EOF
Debug.Print .Fields(0); " "; .Fields(1)
strMsg = strMsg & .Fields(1) & vbCrLf
.MoveNext
Loop
End With
rsResults.Close
qdfTemp.Close
End Sub
现在让我们来简单地分析一下上面的代码。在上面的代码中数据库的路径是用的绝
对路径。如果Northwind数据库的路径同你机器上的不同,你需要修改这个路径,
以便程序能找到这个数据库。
SQL代码是在Access中建立好然后粘贴到程序中来的。这样做不仅免去你书写代码
的麻烦,而且还不容易出错。在粘贴完之后,将原来在SQL代码中的"Bigfoot
Breweries" 和 "Beverages"用公共变量CompanyName和CategoryName替换掉。
在定义了QueryDef之后,程序枚举记录集。记录集的信息不仅在立即窗口中显示出
来,同时被写入strMsg变量中。
在结束对类模块的编码之前,我们还需要对类模块的Terminate事件编写代码。将
下面的代码放到该事件中。
Private Sub Class_Terminate()
MsgBox strMsg, Title:="Beverage Results for " & CompanyName, buttons:=
vbExclamation
End Sub
现在我们已结束了对类模块的编程
补充:软件开发 , Vb ,
上一个:语言选择引起的查询错误
下一个:用代码创建数据库,表,字段
- 更多VB疑问解答:
- vb把图片转换成 base64代码
- 批处理转移文 之errorlevel
- vb 6.0 调用vb.net dll混合程序集错误
- VB inet控件访问ftp 本机测试通过客户机inet控件使用失败。急!!
- 求助在Dir1控件当前目录下新建一个文件夹的代码
- CreateObject创建Word Excel对象失败,提示,无法加载DLL,怎么解决?
- 有两个磁盘阵列,如何使用能达到最好的效果
- cloudStack 如何实现 vSphere的DRS功能
- 和难缠客户的那些事儿
- 批处理转移文 之errorlevel
- vb 6.0 调用vb.net dll混合程序集错误
- VB inet控件访问ftp 本机测试通过客户机inet控件使用失败。急!!
- 求助在Dir1控件当前目录下新建一个文件夹的代码
- CreateObject创建Word Excel对象失败,提示,无法加载DLL,怎么解决?
- 有两个磁盘阵列,如何使用能达到最好的效果