2013-07-24 33 views
0

我有一個DataSet,我需要在運行時動態添加表,但這些表需要反映現有的數據庫結構。有沒有辦法在運行時將特定表的模式(不是數據)拉到DataSet中?基於數據庫模式動態添加表

因此,例如,我可能在數據庫中有一個帳戶表(以及數百個帳戶)。我需要在運行時在DataSet中創建一個Account表(基於最終用戶的各種操作),但是對於每個表而言,手動編寫這些表的手段太多。

+1

爲什麼你不使用實體框架?然後你可以引用每個表作爲一個對象,並使用一些邏輯來確定哪些是需要的。 – AntLaC

+0

使用 的SqlCommand 文本 「從INFORMATION_SCHEMA.COLUMNS選擇*在表格名=‘表名’」 你想用數據讀取器什麼.. –

+0

@VenkatRenukaPrasad無需查詢數據庫,他能做到這一點編程因爲他有DataSet對象,所以他可以查看它並遍歷模式。看到我的答案。 –

回答

0

你沒有指定你正在使用的數據庫引擎,所以最好的通用方法是使用IDataReader的GetSchemaTable方法。

有關如何操作here的詳細信息。

0

如果您運行一個返回數據表的SQL查詢,它將具有該表的結構。因此,

select * from SourceTable where 1 = 2; 

其中不返回行,但所有的列。 DataSet填充等完成。

0

您可以通過編程方式修改和檢查數據模式和數據。您可以通過編程將列添加到數據集:http://msdn.microsoft.com/en-us/library/hfx3s9wd.aspx

DataTable workTable = new DataTable("Customers"); 

DataColumn workCol = workTable.Columns.Add("CustID", typeof(Int32)); 
workCol.AllowDBNull = false; 
workCol.Unique = true; 

workTable.Columns.Add("CustLName", typeof(String)); 
workTable.Columns.Add("CustFName", typeof(String)); 
workTable.Columns.Add("Purchases", typeof(Double)); 

您可以創建新表還到DataSet。您可以檢查和遍歷所擁有的模式:查看DataSet的Tables屬性,它包含您的DataTables(DataTableCollection)。 DataTables包含Columns屬性。知道這很簡單。

相關問題