一般來說,書上都會教大家使用DataSet來Fill資料進DataTable使用
但這樣對只使用一個DataTable來說,似乎又有點多了一個步驟


這次在開發專案時,因為需要用到舊有的資料庫
但資料庫卻又有一堆空白資料是我不要的
照理來說,這種情況應該是要用SQL語法來解決
像是用Trim或RTrim、LTrim來去空白
但我需要把資料撈出來後,再去處理資料
所以我就直接使用DataTable來塞資料
到時候再把SqlDataSource指向DataTable即可


以下就是關於DataTable 新增 DataRow的程式碼


<pre>
    Public Function DBInit() As DataTable
        Dim dt As New DataTable() '宣告一個DataTable
        dt.Columns.Add(New DataColumn("name", GetType(String))) '定義DataTable裡面的Row
        dt.Columns.Add(New DataColumn("email", GetType(String))) '定義DataTable裡面的Row


        Dim dr As SqlDataReader '宣告一個SqlDataReader 
        '要用以下的連線字串方法的話要 Imports System 跟 Imports System.Web.Configuration
        Dim Conn As SqlConnection = New SqlConnection(WebConfigurationManager.ConnectionStrings("fantasy").ConnectionString.ToString)
        Dim cmd As SqlCommand = New SqlCommand("SELECT [C_Name], [Office_Email] FROM [D001]", Conn)


        Try
            Conn.Open()
            dr = cmd.ExecuteReader()
            While dr.Read()
                If (Trim(dr.Item("Office_Email"))) <> "" Then
                    Dim mydr As DataRow = dt.NewRow() '宣告一個DataRow
                    mydr("name") = Trim(dr.Item("c_name")).ToString
                    mydr("email") = Trim(dr.Item("Office_Email")).ToString
                    dt.Rows.Add(mydr) '將DataTable 加入宣告好的DataRow
                End If
            End While
        Catch e As Exception
            Response.Write(e.ToString())
        Finally
            If Not (dr Is Nothing) Then  ' --關閉 DataReader
                cmd.Cancel()
                dr.Close()
            End If


            If (Conn.State = ConnectionState.Open) Then   ' --關閉 DB的連線
                Conn.Close()
            End If
        End Try
        Return dt '回傳一個datatable
    End Function


</pre>


這段程式碼已經寫成function,可直接使用來回傳一個datatable
以後可以這樣直接寫在一個Class之後再呼叫來用就可以了

arrow
arrow
    全站熱搜

    kingjoy1235 發表在 痞客邦 留言(0) 人氣()