人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

在VB.NET中運用MS Access存儲過程 — 第二部份

在VB.NET中運用MS Access存儲過程 — 第二部份

更新時間:2022-06-27 文章作者:未知 信息來源:網絡 閱讀次數:

在VB.NET中使用MS Access存儲過程 — 第二部份
作者: David Wasserman, MCP
4/18/2002
譯者:Qianqian
(thousandvb@yeah.net)5/10/2002

文章源代碼: msaccess_sp2.zip
介紹
歡迎來到MS Access存儲過程的第二部分討論。第一部分詳細地描述了如何使用ADO.NET和Visual Basic.NET在Access中創建存儲過程. 第二部分將會示范如何通過數據庫訪問層訪問在第一部分已經創建的存儲過程,你可以模仿它并且用在自己的應用程序里。這篇文章會詳細地描述如何使用Visual Basic.NET實現數據庫的訪問層。
數據庫層的主要目的是通過類模塊提供一個訪問數據庫的網關。這個類模塊將充當數據庫和應用程序之間的粘合劑。利用數據庫訪問層來訪問數據庫有2個優點:你可以有改變你的后臺數據庫技術(從Access改到SQL Server)而不影響應用系統的能力。你還能夠通過在應用程序和數據庫訪問層之間增加一個控制層,來保證傳過去的數據是“純凈”的。在.NET里,數據庫訪問層通常會包括一個遵循面向對象規范的類模塊,而Visual Basic 的較早的版本會使用一個標準模塊來處理。
數據庫訪問層 - 代碼
現在該是我們卷起袖子來看一些代碼的時候了。在添加一個空類以后的第一件事情,就是列出這里需要使用的.NET類庫,如下所示:
Imports System
Imports System.Data
Imports System.Data.OleDb
System 庫 對大多數程序來說是標準的, 但是我把它作為一個習慣,在所有的代碼中都包含這個類庫。而System.Data 庫則是一個對于大多數數據庫訪問程序都需要的庫。System.Data.OleDb 將用在訪問Access所需要的OLE DB Provider。如果我們需要使用SQL Server,則我們最好使用定制的SQL Provider System.Data.SqlClient.
下一行開始了類的定義
Public Class DBTier
這里我們定義類名為 DBTier, 并且給他Public 修飾符, 因此它將可以被其他代碼模塊訪問。在類定義以后,將聲明所有要用到的屬性。
Shared connectionString As String = _
"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program " _
& "Files\Microsoft Office\Office10\Samples\Northwind.mdb"
這里只聲明了一個String屬性,connectionString. 這個變量保存了 Northwind Access數據庫的連接字符串。聲明這個變量為Shared,說明它是一個“類變量(Class Variable)”,一個class variable是和類關聯的,二不是和這個類產生的每個對象相關聯。(譯者:VB.Net的Shared 修飾符相當于C++或C#的Static修飾符)
在連接字符串的定義之后,你可以看到這里有3個過程和1個函數。函數返回了一個包含所有產品列表的dataset。它調用了在第一部分已經創建的存儲過程 procProductsList.
然后你可以看到3個過程。他們對應于每個存儲過程,用于增加、刪除、修改產品;它們都有類似的結構; 每個使用了一個command,并聲明了連接對象和必須的參數。 作為一個例子, 我們來分開討論ProductsDeleteItem過程。理解了這個過程,其他2個就很容易消化了.
一開始,這個過程使用了一個參數, ProductID, 表示需要刪除的產品的ID。
Sub ProductsDeleteItem(ByVal ProductID As Integer)
接著,聲明了所有的變量. 分別用于存儲過程將要使用的connection,command和parameter. 這個參數就是需要刪除的那格產品ID.
Dim con As OleDbConnection
Dim cmd As OleDbCommand = New OleDbCommand()
Dim paramProductID As New OleDbParameter()
Command和connection的初始化:
con = New OleDbConnection(connectionString)
cmd.Connection = con
確認了paramProductID 參數的屬性,然后這個參數被添加到Command對象. 在這個例子中,要用到存儲過程里的參數名字是inProductID, 它是一個整型變量,并用函數的參數進行賦值。
With paramProductID
.ParameterName = "inProductID"
.OleDbType = OleDbType.Integer
.Size = 4
.Value = ProductID
End With
cmd.Parameters.Add(paramProductID)
最后一步是真正調用存儲過程.
cmd.CommandText = "EXECUTE procProductsDeleteItem"
con.Open()
cmd.ExecuteNonQuery()
con.Close()
注意connection對象這里只在需要執行存儲過程的時候保留,然后就馬上關閉了。這將減少可能有的資源占用。
雖然這個例子中使用的DBTier類已經清楚的介紹了如何使用Access存儲過程, 它的功能仍然需要更多的增強來達到產品級的水平。因為沒有錯誤處理。他仍然需要更多的強化。
本文的源代碼包括了DBTier.vb,這個文件同時包含了一些簡單的Form來測試類的實現。
總而言之,我希望您至少通過這些文章獲得了2個信息:一個是在Microsoft Access中存儲過程是存在的并且是不錯的, 雖然有不足。第二個你需要同時理解需要把應用程序的數據庫訪問分解到獨立的類、函數、過程里面,這將使軟件的維護和升級變得更加容易。
完整的DBTier.vb:
Imports System
Imports System.Data
Imports System.Data.OleDb

' Functions and subroutines for executing Stored Procedures in Access.
Public Class DBTier

' Change Data Source to the location of Northwind.mdb on your local
' system.
Shared connectionString As String = _
"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program " _
& "Files\Microsoft Office\Office10\Samples\Northwind.mdb"
' This function returns a dataset containing all records in
' the Products Table.
Function ProductsList() As DataSet
Dim con As OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim sSQL As String


sSQL = "EXECUTE procProductsList"

con = New OleDbConnection(connectionString)
da = New OleDbDataAdapter(sSQL, con)
ds = New DataSet()
da.Fill(ds, "Products")

Return ds

End Function

' This Function adds one record to the Products table.
Sub ProductsAddItem(ByVal ProductName As String, _
ByVal SupplierID As Integer, ByVal CategoryID As Integer)
Dim con As OleDbConnection
Dim cmd As OleDbCommand = New OleDbCommand()
Dim paramProductName As New OleDbParameter()
Dim paramSupplierID As New OleDbParameter()
Dim paramCategoryID As New OleDbParameter()

con = New OleDbConnection(connectionString)
cmd.Connection = con

With paramProductName
.ParameterName = "inProductName"
.OleDbType = OleDbType.VarChar
.Size = 40
.Value = ProductName
End With
cmd.Parameters.Add(paramProductName)

With paramSupplierID
.ParameterName = "inSupplierID"
.OleDbType = OleDbType.Integer
.Size = 4
.Value = SupplierID
End With
cmd.Parameters.Add(paramSupplierID)

With paramCategoryID
.ParameterName = "inCategoryID"
.OleDbType = OleDbType.Integer
.Size = 4
.Value = CategoryID
End With
cmd.Parameters.Add(paramCategoryID)

cmd.CommandText = "EXECUTE procProductsAddItem"
con.Open()
cmd.ExecuteNonQuery()
con.Close()

End Sub

' This function Updates a specific JobTitle Record with new data.
Sub ProductsUpdateItem(ByVal ProductID As Integer, _
ByVal ProductName As String)
Dim con As OleDbConnection
Dim cmd As OleDbCommand = New OleDbCommand()
Dim paramProductName As New OleDbParameter()
Dim paramProductID As New OleDbParameter()

con = New OleDbConnection(connectionString)
cmd.Connection = con

With paramProductID
.ParameterName = "inProductID"
.OleDbType = OleDbType.Integer
.Size = 4
.Value = ProductID
End With
cmd.Parameters.Add(paramProductID)

With paramProductName
.ParameterName = "inProductName"
.OleDbType = OleDbType.VarChar
.Size = 40
.Value = ProductName
End With
cmd.Parameters.Add(paramProductName)

cmd.CommandText = "EXECUTE procProductsUpdateItem"
con.Open()
cmd.ExecuteNonQuery()
con.Close()

End Sub

' This function deletes one record from the Products table.
Sub ProductsDeleteItem(ByVal ProductID As Integer)
Dim con As OleDbConnection
Dim cmd As OleDbCommand = New OleDbCommand()
Dim paramProductID As New OleDbParameter()

con = New OleDbConnection(connectionString)
cmd.Connection = con

With paramProductID
.ParameterName = "inProductID"
.OleDbType = OleDbType.Integer
.Size = 4
.Value = ProductID
End With
cmd.Parameters.Add(paramProductID)

cmd.CommandText = "EXECUTE procProductsDeleteItem"
con.Open()
cmd.ExecuteNonQuery()
con.Close()

End Sub

End Class

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 东丰县| 萍乡市| 鹤峰县| 资溪县| 涪陵区| 新田县| 兴安县| 阿合奇县| 航空| 拉萨市| 临沭县| 上饶县| 星座| 兴义市| 铜陵市| 科技| 湖南省| 保定市| 淅川县| 津南区| 麻城市| 富民县| 浑源县| 都昌县| 措勤县| 司法| 汾西县| 临朐县| 蒲江县| 会泽县| 三亚市| 常德市| 洪雅县| 自治县| 江安县| 马鞍山市| 柳林县| 沅陵县| 宣化县| 长乐市| 荔波县|