我有一個關於將datareader
轉換爲datatable
的問題。在我的代碼中,我有一個datareader
在一個類中創建並傳遞給另一個類,我想將它轉換爲datatable
。如何將數據讀取器轉換爲數據表
當我這樣做時,它似乎不工作,因爲表格仍爲空。如果我在同一個函數中進行轉換,它可以正常工作。
它只有當我通過datareader
到另一個功能,它停止工作。這是因爲dr
已關閉嗎?我如何克服這個問題?任何幫助都會很棒。
我有一個關於將datareader
轉換爲datatable
的問題。在我的代碼中,我有一個datareader
在一個類中創建並傳遞給另一個類,我想將它轉換爲datatable
。如何將數據讀取器轉換爲數據表
當我這樣做時,它似乎不工作,因爲表格仍爲空。如果我在同一個函數中進行轉換,它可以正常工作。
它只有當我通過datareader
到另一個功能,它停止工作。這是因爲dr
已關閉嗎?我如何克服這個問題?任何幫助都會很棒。
檢查了這一點:
Public Function ExecuteQuery(ByVal s As String, ByVal condb As SqlConnection, ByVal ParamArray params() As SqlParameter) As DataTable
Dim dt As DataTable = Nothing
Using da As New System.Data.SqlClient.SqlDataAdapter(s, condb)
dt = New DataTable
If params.Length > 0 Then
da.SelectCommand.Parameters.AddRange(params)
End If
If da.SelectCommand.Connection.State <> ConnectionState.Open Then da.SelectCommand.Connection.Open()
da.Fill(dt)
End Using
Return dt
End Function
使用的DataTable Load()
方法。
// Given a DataReader called "reader"
DataTable dt = new DataTable();
dt.Load(reader)
您不應該傳遞'DataReader',因爲您完全錯過了處理對象或幾次數據不會再出現的地方。你可以編輯正在使用的方法,即返回'DataReader'之前的方法嗎?因此,舉例來說,您可以向該方法添加一個DataTable屬性,並在返回之前填充它,以便您可以在該類之外抓取... – balexandre 2012-02-23 12:40:26
不,我被指示只返回一個數據讀取器。其邏輯是,通過數據讀取器的函數可以在其他地方使用 – jason 2012-02-23 12:47:37