2012-06-23 14 views
8

Chcę dostać schematu dla tabeli o nazwie „Petro” w SQL Server po inicjalizacji connectionString, używam ten kodcoraz Schemat jednej tablicy w C#

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

ale zwraca schematu dla wszystkich tabel . Chcę tylko schematu Petro. Co powinienem zrobić?

+0

MS SQL Server? Lub inny typ serwera sql? – Sascha

+0

Baza danych jest w SQLServer – Saeed

+0

Oto odpowiedź: [Ado.net Uzyskiwanie schematu dla tabeli] (http://stackoverflow.com/questions/173834/ado-net-getting-the-schema-for-a-table) –

Odpowiedz

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

Spójrz tutaj, aby uzyskać więcej informacji: MSDN: Working with the GetSchema Methods

Edit: użyj GetSchema zamiast getSchema

+0

Ten kod zwróci tylko 1 wiersz z nazwą tabeli. Jeśli jest to potrzebne do uzyskania schematu pełnej tabeli (wszystkie kolumny z ich typami), kod powinien wyglądać następująco: 'conn.GetSchema (" Kolumny ", ograniczenia);' – dyatchenko

3

SQL Server rozwiązanie:

Istnieje procedura sklep nazywa sp_columns. Po uruchomieniu tej procedury z nazwą tabeli jako parametrem zwróci schemat tylko dla tej tabeli.

4

można pobrać schemat w następujący sposób:

  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

Czy naprawdę chcesz wybrać * w Petro tylko po to, aby uzyskać schemat? Wygląda na to, że cmd.ExecuteReader dodaje do tego wiele niepotrzebnych narzutów. – MBentley

+0

Ponieważ OP nie wymienił żadnej nazwy kolumny w pytaniu oprócz nazwy tabeli, odpowiedziałem na podstawie tego ... –

Powiązane problemy