根据数据库架构动态添加表

时间:2013-07-24 15:36:46

标签: c# .net ado.net dataset

我有一个DataSet,我需要在运行时动态添加表,但这些表需要反映现有的数据库结构。有没有办法在运行时将特定表的模式(而不是数据)拉入DataSet。

因此,例如,我可能在数据库中有一个Account表(以及数百个其他表)。我需要在运行时在DataSet中创建一个Account表(基于最终用户的各种操作),但是对于每个表都有太多的手动编码。

3 个答案:

答案 0 :(得分:0)

你没有指定你正在使用的数据库引擎,所以做你想做的最好的通用方法是使用IDataReader的GetSchemaTable方法。

有关如何执行此操作的详细信息here

答案 1 :(得分:0)

如果运行返回数据表的SQL查询,它将具有表的结构。因此,

select * from SourceTable where 1 = 2;

不返回任何行,而是返回所有列。完成数据集填写等。

答案 2 :(得分:0)

您可以以编程方式修改和检查数据架构和数据。您可以以编程方式将列添加到DataSet: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属性。知道这是直截了当的。

相关问题