鉴于现有DataReader
(在本例中为OleDbDataReader),我可以使用DataTable
构建DataTable.Load
:
// C#
OleDbDataReader dr = SomeMethodThatReturnsADataReader();
var dt = new DataTable();
dt.Load(dr);
' VB.NET
Dim dr As OleDbDataReader = SomeMethodThatReturnsADataReader();
Dim dt = New DataTable()
dt.Load(dr);
但是,这会将DataReader
中的数据加载到DataTable
。
我想创建一个与现有DataTable
的结构相匹配的DataReader
,但不包含任何数据。
我该怎么做?
修改
经过进一步思考,我知道没有内置方法可以做到这一点。但问题可以分为两部分吗?
DataReader
DataTable
答案 0 :(得分:0)
DataAdapter Class,即OleDbDataAdapter
和其他人的基类,拥有受保护的FillSchema Method,可以IDataReader
填充空数据表' s架构以匹配读者的字段。
您需要构建一个小实用程序类来使用此功能。
Friend Class ReaderAdapter
Inherits System.Data.Common.DataAdapter
Public Function GetTypedTable(dataReader As IDataReader) As DataTable
Dim ret As New DataTable
FillSchema(ret, Data.SchemaType.Source, dataReader)
Return ret
End Function
End Class
使用示例:
Dim rdr As OleDb.OleDbDataReader = cmd.ExecuteReader
Dim ra As New ReaderAdapter()
Dim emptyTypedTable As DataTable = ra.GetTypedTable(rdr)