0

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

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

4

3 回答 3

0

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

select * from SourceTable where 1 = 2;

它不返回任何行,但返回所有列。数据集填充等。完成。

于 2013-07-24T19:43:11.407 回答
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 属性。知道这是直截了当的。

于 2013-07-24T20:03:07.933 回答
0

您没有指定您正在使用的数据库引擎,因此最好的通用方法是使用 IDataReader 的 GetSchemaTable 方法。

有关如何在此处执行此操作的更多信息。

于 2013-07-24T16:36:14.300 回答