Categorias

Preenher DataTable com um SQLDataReader em C#

Geralmente para se preencher um DataTable é preciso utilizar um DataAdapter.

Com este código é possível carregar e preenher um System.Data.DataTable com dados de um SqlDataReader.

public static DataTable GetTable(SqlDataReader sqlReader)
{
  DataTable schemaTable = sqlReader.GetSchemaTable();
  DataTable outputTable = new DataTable();
  DataColumn dcColumn;
  DataRow drRow;

  for (int i = 0; i <>
  {
    dcColumn = new DataColumn();
    if (! outputTable.Columns.Contains(schemaTable.Rows[i]["ColumnName"].ToString()))
    {
      dcColumn.ColumnName = schemaTable.Rows[i]["ColumnName"].ToString();
      dcColumn.Unique = Convert.ToBoolean(schemaTable.Rows[i]["IsUnique"]);
      dcColumn.AllowDBNull = Convert.ToBoolean(schemaTable.Rows[i]["AllowDBNull"]);
      dcColumn.ReadOnly = Convert.ToBoolean(schemaTable.Rows[i]["IsReadOnly"]);
      outputTable.Columns.Add(dcColumn);
    }
  }

  while (sqlReader.Read())
  {

    drRow = outputTable.NewRow();
    for ( int i = 0; i <>
    {
      drRow[i] = sqlReader.GetValue(i);
    }
    outputTable.Rows.Add(drRow);
  }

  return outputTable;
}