2012-06-23 45 views
8

我想表的架構的名稱爲「石油」在SQL Server 初始化的connectionString後,我用這個代碼越來越在C#中一個表的模式,

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

,但對於所有的表返回模式。我只想要Petro架構。我該怎麼辦?

+0

MS SQL服務器?或另一種類型的SQL服務器? – Sascha

+0

數據庫在SQLServer中 – Saeed

+0

這裏是一個答案:[Ado.net獲取表的模式](http://stackoverflow.com/questions/173834/ado-net-getting-the-schema-for-a-table ) –

回答

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

看看這裏的更多信息:MSDN: Working with the GetSchema Methods

編輯:使用替代的getSchema

+0

此代碼將只返回1行與表的名稱。如果需要得到一個完整的表模式(所有列都有它們的類型),代碼應該如下:'conn.GetSchema(「Columns」,restrictions);' – dyatchenko

3

SQL Server解決方案:

有一個叫sp_columns一個存儲過程。當您使用表名作爲參數運行該過程時,它將只爲該表返回模式。

4

的getSchema您可以檢索方式如下模式:

  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

你真的想要在Petro上選擇*架構?它看起來像cmd.ExecuteReader增加了很多不需要的開銷。 – MBentley

+0

由於OP沒有提及除表名外的問題中的任何列名,我已經根據這個答案回答了...... –