一。
/// <summary>
/// Will DataReader to DataTable
/// </summary>
/// <param name="dr">IDataReader</param>
/// <returns></returns>
protected DataTable ConvertDataReaderToDataTable(IDataReader dr)
{
DataTable dt = new DataTable("DataTable");
try
{
int fieldCount = dr.FieldCount;//Access to the current line number of rows
for (int count = 0; count <= fieldCount; count++)
{
dt.Columns.Add(dr.GetName(count), dr.GetFieldType(count));
}
//populate datatable
while (dr.Read())
{
DataRow datarow = dt.NewRow();
for (int i = 0; i < dr.FieldCount; i++)
{
datarow[i] = dr[i].ToString();
}
dt.Rows.Add(datarow);
}
dr.Close();
return dt;
}
catch (Exception ex)
{
throw new Exception("Conversion error Error!", ex);
}
}
二。
Dim dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection) Dim dt As DataTable = New DataTable()
dt.Load(dr)
DataTable To DataReader
使用Load方法时,如果DataTable中已经存有数据,新旧数据将合并。(新数据是指从DataReader中读取的)