一。
/// <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中讀取的)