我有一个关于将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