我想表的架構的名稱爲「石油」在SQL Server 初始化的connectionString後,我用這個代碼越來越在C#中一個表的模式,
conn.open();
conn.getSchema("Tables");
,但對於所有的表返回模式。我只想要Petro架構。我該怎麼辦?
我想表的架構的名稱爲「石油」在SQL Server 初始化的connectionString後,我用這個代碼越來越在C#中一個表的模式,
conn.open();
conn.getSchema("Tables");
,但對於所有的表返回模式。我只想要Petro架構。我該怎麼辦?
string[] restrictions = new string[4];
restrictions[2] = "Petro";
DataTable table = conn.GetSchema("Tables",restrictions);
看看這裏的更多信息:MSDN: Working with the GetSchema Methods
編輯:使用替代的getSchema
此代碼將只返回1行與表的名稱。如果需要得到一個完整的表模式(所有列都有它們的類型),代碼應該如下:'conn.GetSchema(「Columns」,restrictions);' – dyatchenko
SQL Server解決方案:
有一個叫sp_columns
一個存儲過程。當您使用表名作爲參數運行該過程時,它將只爲該表返回模式。
的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();
你真的想要在Petro上選擇*架構?它看起來像cmd.ExecuteReader增加了很多不需要的開銷。 – MBentley
由於OP沒有提及除表名外的問題中的任何列名,我已經根據這個答案回答了...... –
MS SQL服務器?或另一種類型的SQL服務器? – Sascha
數據庫在SQLServer中 – Saeed
這裏是一個答案:[Ado.net獲取表的模式](http://stackoverflow.com/questions/173834/ado-net-getting-the-schema-for-a-table ) –