2012-06-23 12 views
8

voglio ottenere schema per una tabella con il nome di "Petro" in SQL Server dopo l'inizializzazione connectionString, io uso questo codiceottenendo schema di una tabella in C#

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

ma restituisce schema per tutte le tabelle . Voglio solo lo schema Petro. Cosa dovrei fare? soluzione server

+0

MS SQL Server? O un altro tipo di server SQL? – Sascha

+0

database è in SQLServer – Saeed

+0

Ecco una risposta: [Ado.net Ottenere lo schema per una tabella] (http://stackoverflow.com/questions/173834/ado-net-getting-the-schema-for-a-table) –

risposta

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

Guardate qui per maggiori informazioni: MSDN: Working with the GetSchema Methods

Edit: utilizzare GetSchema invece di GetSchema

+0

Questo codice restituirà solo 1 riga con il nome della tabella. Se è necessario ottenere uno schema completo della tabella (tutte le colonne con i loro tipi) il codice dovrebbe essere il seguente: 'conn.GetSchema (" Columns ", restrizioni);' – dyatchenko

3

SQL:

C'è una procedura negozio chiamato sp_columns. Quando si esegue quella procedura con il nome della tabella come parametro, verrà restituito lo schema solo per quella tabella.

4

È possibile recuperare lo schema in modo seguente:

  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

Vuoi davvero selezionare * su Petro solo per ottenere lo schema? Sembra che cmd.ExecuteReader aggiunga un sovraccarico non necessario a questo. – MBentley

+0

Dato che l'OP non ha menzionato alcun nome di colonna nella domanda tranne il nome della tabella, ho risposto sulla base di quello ... –

Problemi correlati