Как преобразовать datareader в datatable - PullRequest
7 голосов
/ 23 февраля 2012

У меня есть вопрос о преобразовании datareader в datatable.В моем коде у меня есть datareader, созданный в одном классе и переданный другому классу, который я хочу преобразовать в datatable.

Когда я делаю это, это не похоже на работу, так как таблица остается пустой.Если я делаю преобразование в той же функции, она работает нормально.

Только когда я передаю datareader другой функции, он перестает работать .Это потому что dr закрыт или что-то еще?Как мне преодолеть эту проблему?Любая помощь будет отличной.

Ответы [ 2 ]

48 голосов
/ 22 апреля 2013

Использовать метод DataTable Load().

 // Given a DataReader called "reader"
 DataTable dt = new DataTable();
 dt.Load(reader)
2 голосов
/ 23 февраля 2012

Проверьте это:

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
...