我有一个程序,我在其中运行查询并将数据存储在 DataTable 中。然后我允许用户保存该 DataTable.WriteXML。我遇到的问题是我想将该保存的文件(XML 文件)读入另一个具有不同名称的 DataTable - 它不允许这样做!它给了我一个错误“将结果表加载到文件时出错:数据表:'ImportTable' 与源中的任何数据表都不匹配”
现在我相信这条消息告诉我 XML 包含的表名与我尝试将 ReadXML 写入其中的 DataTable 不同。我尝试将 TableName 属性设置为空白 - 但这没有任何区别。
所以 - 我的问题是其他人如何解决这个问题?我正在使用标准的 DataTable.WriteXML(filename) - 和 DataTable.ReadXML 方法调用。并且由于一些设计问题 - 我确实需要将导入 DataTable 命名为与用于导出数据的名称不同的名称。
是否有不同的方法来写出和读入 DataTable 中的数据来解决这个问题?
示例代码 - 显示问题 在表单加载中 - 创建两个表 - 一个名为 Export 另一个 Import。为导出创建一个结构 - 并用 10 条记录填充它。
private void Form_Main_Load(object sender, EventArgs e)
{
ExportTable = new DataTable("Export");
ImportTable = new DataTable("Import");
ExportTable.Columns.Add("ID", Type.GetType("System.Int32"));
ExportTable.Columns.Add("Name", Type.GetType("System.String"));
ExportTable.Columns.Add("Amount", Type.GetType("System.Int32"));
// Populate the first one
DataRow workRow;
for (int i = 0; i <= 9; i++)
{
workRow = ExportTable.NewRow();
workRow[0] = i;
workRow[1] = "CustName" + i.ToString();
workRow[2] = i;
ExportTable.Rows.Add(workRow);
}
}
然后创建两个按钮 - 一个用于导出数据 - 另一个用于导入数据。
private void button_Export_Click(object sender, EventArgs e)
{
ExportTable.WriteXml("c:\\Temp\\TableOut.xml");
}
private void button_Import_Click(object sender, EventArgs e)
{
ImportTable.ReadXmlSchema("c:\\Temp\\TableOut.xml");
ImportTable.ReadXml("c:\\Temp\\TableOut.xml");
}
运行程序 - 导出数据 - 然后单击导入按钮。当您这样做时 - 您将收到错误消息 - “DataTable 'Import' 与源中的任何 DataTable 都不匹配。” 现在 - 我意识到这是因为 XML 在 XML 中嵌入了导出表名称。在我的情况下,我需要将该数据导入具有不同名称的 DataTable - 我想知道其他人过去是如何(以及是否)处理过这个问题的?您是否手动更改了 XML 中的名称?您是否临时更改了数据表名称?或者是否有另一种更好的方法来解决尝试使用 DataTable 的 READXML 方法的问题?