我有一个DataSet,我需要在运行时动态添加表,但这些表需要反映现有的数据库结构。有没有办法在运行时将特定表的模式(而不是数据)拉入DataSet。
因此,例如,我可能在数据库中有一个Account表(以及数百个其他表)。我需要在运行时在DataSet中创建一个Account表(基于最终用户的各种操作),但是对于每个表都有太多的手动编码。
答案 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属性。知道这是直截了当的。