/// <summary>
/// 将DataReader 转为 DataTable
/// </summary>
/// <param name="DataReader">DataReader</param>
public
static
DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
... {
DataTable datatable = new DataTable();
DataTable schemaTable = dataReader.GetSchemaTable();
//动态添加列
int i = 0;
try
...{
foreach (DataRow myRow in schemaTable.Rows)
...{
DataColumn myDataColumn = new DataColumn();
myDataColumn.DataType = dataReader.GetFieldType(i); //myRow.GetType();
myDataColumn.ColumnName = myRow[0].ToString();
datatable.Columns.Add(myDataColumn);
i++;
}
//添加数据
while(dataReader.Read())
...{
DataRow myDataRow = datatable.NewRow();
for( i=0;i<schemaTable.Rows.Count;i++)
...{
myDataRow[i] = dataReader[i];
}
datatable.Rows.Add(myDataRow);
myDataRow = null;
}
schemaTable = null;
dataReader.Close();
return datatable;
}
catch(Exception ex)
...{
Error.Log(ex.ToString());
throw new Exception("转换出错出错!",ex);
}
}
... {
DataTable datatable = new DataTable();
DataTable schemaTable = dataReader.GetSchemaTable();
//动态添加列
int i = 0;
try
...{
foreach (DataRow myRow in schemaTable.Rows)
...{
DataColumn myDataColumn = new DataColumn();
myDataColumn.DataType = dataReader.GetFieldType(i); //myRow.GetType();
myDataColumn.ColumnName = myRow[0].ToString();
datatable.Columns.Add(myDataColumn);
i++;
}
//添加数据
while(dataReader.Read())
...{
DataRow myDataRow = datatable.NewRow();
for( i=0;i<schemaTable.Rows.Count;i++)
...{
myDataRow[i] = dataReader[i];
}
datatable.Rows.Add(myDataRow);
myDataRow = null;
}
schemaTable = null;
dataReader.Close();
return datatable;
}
catch(Exception ex)
...{
Error.Log(ex.ToString());
throw new Exception("转换出错出错!",ex);
}
}