Use a combination of DataTable and DataAdapter objects, as follows:
SqlConnection conn = new SqlConnection("Data Source=localhost;Integrated
Security=SSPI;Initial Catalog=Pubs");
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Authors", conn);
conn.Open();
DataSet ds = new DataSet();
DataTable[] data = da.FillSchema(ds, SchemaType.Source);
Both the dataset as well as the data DataTable array will have the table schema from the query. You can select from multiple tables to get multiple schemas. From there you can use DataTable.Columns collection to access each column and its full definition and properties.
This was first published in December 2003