ADO.NET 2.0 的 DataTable可以直接從DataRead讀取

ADO.NET 2.0 的 DataTable可以直接從DataRead讀取

ADO.NET 1.1以前,要從資料庫中把要的資料讀取到DataTable需要經過以下的過程

  1. 建立Connection
  2. 建立Command
  3. 使用DataAdapter
  4. 將資料Fill到DataSet
  5. 從DataSet中讀取第0個DataTable

大致上的程式如下


Using Conn As New SqlConnection(ConnStr)
    Dim Cmmd As New SqlCommand("SELECT * FROM Customer", Conn)
    Dim Da As New SqlDataAdapter(Cmmd)
    Dim Ds As New DataSet
    Da.Fill(Ds)
    Dim Dt As New DataTable
    Dt = Ds.Tables(0)
End Using

然而我們經常需要的就只是一個DataTable而已,卻需要透過DataAdapter的Fill到DataSet中,然後再從DataSet中取出,這樣的過程感覺上繞了一大圈

所以2.0的時候,就讓DataTable可以單獨的去Load一個DataReader,就能夠將相關的資料讀入一個DataTable中,相關的程式碼如下:


Using Conn As New SqlConnection(ConnStr)
    Dim Cmmd As New SqlCommand("SELECT * FROM Customer", Conn)
    'Dim Da As New SqlDataAdapter(Cmmd)
    'Dim Ds As New DataSet
    'Da.Fill(Ds)
    Dim Dt As New DataTable
    Conn.Open()         '這邊要特別注意,使用DataRead前,要先Conn.Open
    Dt.Load(Cmmd.ExecuteReader)
    Conn.Close()        'Conn用完記得關閉
End Using

有個地方要特別提醒,使用DataAdapter時候,Conn會自動的開啟、自動關閉;但是使用DataReader的話,使用前要記得先Open,使用後也要記得Close


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat