2012-06-23 12 views
8

Quiero conseguir el esquema de una tabla con el nombre "Petro" en el servidor SQL después de inicializar connectionString, utilizo este Códigoconseguir el esquema de una tabla en C#

conn.open(); 
conn.getSchema("Tables"); 

pero vuelve esquema para todas las tablas . Solo quiero el esquema de Petro. ¿Que debería hacer? solución de servidor

+0

MS SQL Server? ¿O otro tipo de servidor sql? – Sascha

+0

la base de datos se encuentra en SQLServer – Saeed

+0

Aquí hay una respuesta: [Ado.net Obtener el esquema de una tabla] (http://stackoverflow.com/questions/173834/ado-net-getting-the-schema-for-a-table) –

Respuesta

13
string[] restrictions = new string[4]; 
restrictions[2] = "Petro"; 
DataTable table = conn.GetSchema("Tables",restrictions); 

Mira aquí para obtener más información: MSDN: Working with the GetSchema Methods

Editar: se utiliza en lugar de GetSchema getSchema

+0

Este código devolverá solo 1 fila con el nombre de la tabla. Si es necesario para obtener un esquema de tabla completo (todas las columnas con sus tipos), el código debería ser el siguiente: 'conn.GetSchema (" Columnas ", restricciones);' – dyatchenko

3

SQL:

Existe un procedimiento tienda llamada sp_columns. Cuando ejecuta ese procedimiento con el nombre de la tabla como parámetro, devolverá el esquema solo para esa tabla.

4

Puede recuperar el esquema de la siguiente manera:

  string sql = "select * from Petro WHERE 1 = 0"; 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand(sql, conn); 
      SqlDataReader reader = cmd.ExecuteReader(); 
      DataTable schema = reader.GetSchemaTable(); 
+0

¿Realmente desea seleccionar * en Petro solo para obtener el esquema? Parece que el cmd.ExecuteReader agrega una gran cantidad de gastos indirectos innecesarios a esto. – MBentley

+0

Como OP no ha mencionado ningún nombre de columna en la pregunta, excepto el nombre de la tabla, he respondido sobre la base de eso ... –

Cuestiones relacionadas