c# - llenar - ADO.Net: obtenga la definición de tabla de las tablas del servidor SQL
que es datareader (5)
Creo que necesitas la clase System.Data.DataTable:
http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx
Estoy usando C # para escribir un método que devuelve la siguiente información sobre una tabla: nombres de columnas, tipos de columnas, tamaños de columnas, claves externas.
¿Puede alguien señalarme en la dirección correcta sobre cómo lograr esto?
Esto realmente depende de cómo te comunicas con tu base de datos. Si está utilizando LinqToSQL u otro ORM similar, esto sería bastante fácil, pero si desea obtener estos valores a través de una consulta, le sugiero que utilice las vistas INFORMATION_SCHEMA, ya que son rápidas y fáciles de consultar.
p.ej
select * from information_schema.columns where table_name = ''mytable''
Para obtener FK y Schema, debe poder usar:
DA.FillSchema()
DS.Table("Name").PrimaryKey
O llamando a sp_fkey utilizando el método que se muestra a continuación
Fragmento de código de Y otro enlace
private void LoanSchema()
{
private List<String> tablesList = new List<String>();
private Dictionary<String, String> columnsDictionary = new Dictionary<String, String>();
string connectionString = "Integrated Security=SSPI;" +
"Persist Security Info = False;Initial Catalog=Northwind;" +
"Data Source = localhost";
SqlConnection connection = new SqlConnection();
connection.ConnectionString = connectionString;
connection.Open();
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = "exec sp_tables";
command.CommandType = CommandType.Text;
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
tablesList.Add(reader["TABLE_NAME"].ToString());
}
reader.Close();
command.CommandText = "exec sp_columns @table_name = ''" +
tablesList[0] + "''";
command.CommandType = CommandType.Text;
reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
columnsDictionary.Add(reader["COLUMN_NAME"].ToString(), reader["TYPE_NAME"].ToString());
}
}
Puede usar el método SqlDataAdapter.FillSchema ().
Alternativamente, puede usar el método SqlDataAdapter.Fill () después de establecer la propiedad MissingSchemaAction del SqlDataAdapter en AddWithKey. Pero si solo quiere el esquema, debe asegurarse de que su consulta no devuelva filas. Esto se puede lograr agregando una declaración como WHERE 1 = 2 a su consulta.
Si está utilizando MS SQL Server, entonces definitivamente debe echar un vistazo al espacio de nombres SMO (objetos de administración del servidor).
Hay objetos que puede usar en .net responsables de todo tipo de cosas en una base de datos (incluidas, entre otras, tablas, columnas, restricciones, etc.)