程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 用類來編寫數據庫程序

用類來編寫數據庫程序

編輯:VB綜合教程
類模塊使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:MSOfficeAccessSamplesNorthwind.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代碼則被封裝在類中。用標准模塊,你必須將控制權交給模塊。最後,類模塊更易於移植。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved