我在vb.net中編程
我想從一個mssql資料庫中讀取資料。我想讓它靈活地用于幾種不同的查詢,所以我把連接部分放到一個單獨的類中。每當我想做一個查詢時,我可以得到一個預先配置好的DataAdapter。 但是由于這種分離,我不知道如何在收集資料后正確地處理我的SqlConnection。一個示例性的使用:
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System. Handles Me.Load
Dim DBA As New DBAccess("dummycommand" /span>)
DBA.providerAdapter.Fill(dummytable)
...處置?'這是你通常處置你的資料收集資源的部分。
End Sub
結束 類別
Friend Class DBAccess
Private SqlString As String
Friend Sub New(ByVal sql As String)
SqlString = sql
End Sub
Friend Function provideAdapter() As SqlDataAdapter
Dim cn As New SqlConnection("duimconstring")
Dim da As New SqlDataAdapter(SqlString, cn)
Return da
結束 函式
結束 類
你能告訴我如何改變這個概念以適應一個處置嗎?
uj5u.com熱心網友回復:
你可以讓你的資料訪問類成為一次性的
Friend Class DBAccess
Implements IDisposable
Private ReadOnly sqlString As String
Private disposedValue As Boolean
Private cn As SqlConnection
Private da As SqlDataAdapter
Friend Sub New(sql As String)
sqlString = sql
結束 sub
friend Function provideAdapter() As SqlDataAdapter
cn = If(cn, New SqlConnection("dummyconstring")
da = If(da, New SqlDataAdapter(SqlString, cn)
Return da
End Function[/span
受保護的 可重復的 子 Dispose(處置 As Boolean)
If Not disposedValueThen
If處置 Then
da?.Dispose()
cn?.Dispose()
結束 If
disposedValue = True
End If
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
Dispose(disposing:=True)
GC.SuppressFinalize(Me)
結束 子
結束 類
并像這樣使用它
使用DBA As NewDBAccess("dummycommand")。
DBA.providerAdapter.Fill(dummytable)
結束 使用 ' 將自動呼叫這里的處置。
但從長遠來看,你可以考慮使用ORM,如Entity Framework,以使你的生活更輕松。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/325291.html
標籤:
