ASP.NET用DataAdapter以及DataSet填滿DataGrid的流程概要

ASP.NET用DataAdapter以及DataSet填滿DataGrid的流程概要

DataSet可以看做是近端的資料庫,可以擁有很多的資料表
DataAdapter可看做是將遠端的資料表轉換成進端資料表的工具
所以簡易的流程為


  1. 建立資料庫連結

  2. 執行SQL

  3. 利用DataAdapter將結果填入DataSet中

  4. 控制項資料繫結(DataBind)

'以下為ASPX後置程式碼 (*.VB)

'前置匯入詞
Imports System.Data.OleDb
Imports System
Imports System.Data
Imports Microsoft.VisualBasic.Strings

'假設宣告
Protected WithEvents dg1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents dg2 As System.Web.UI.WebControls.DataGrid
Dim objCon As OleDbConnection
Dim objDataAdapter As OleDbDataAdapter
Dim objCmd As OleDbCommand
Dim sql As String = ""
Dim id As Integer = 0
Dim Ds As DataSet = New DataSet()


'開始連結資料
Try
  objCon.Open()
  objCmd = objCon.CreateCommand()
  objDataAdapter = New OleDbDataAdapter()
  sql = "SELECT * FROM anyTable1 WHERE anyTable1.id = @id;"
  objCmd.CommandText = sql
  objCmd.Parameters.Add(New OleDbParameter("@id", id))
  objDataAdapter.SelectCommand = objCmd
  '將資料庫傳回的資料記錄到Ds裡面名為tb1的資料表
  objDataAdapter.Fill(Ds,"tb1")

  sql = "SELECT * FROM anyTable2 WHERE anyTable2.id = @id;"
  '因為OleDbParameter @id已經設定過,故不需再次設定
  objCmd.CommandText = sql
  objDataAdapter.SelectCommand = objCmd
  '將資料庫傳回的資料記錄到Ds裡面名為tb2的資料表
  objDataAdapter.Fill(Ds,"tb2")
  dg1.DataBind()
  dg2.DataBind()

Catch ex As Exception
  Response.Write(ex.Message & "An exception of type " & ex.GetType().ToString)
Finally
  objCmd.Dispose()
  objCon.Close() 
End Try

'以下為ASPX的部分內容(*.ASPX)


<asp:DataGrid ID="dg1" Runat="server"></asp:DataGrid>
<asp:DataGrid ID="dg2" Runat="server"></asp:DataGrid>

留言