将数据表保存为用户设置

时间:2010-07-21 00:03:59

标签: c#

我目前尝试使用旧的“properties.settings.default.save()”方法将数据表保存为用户设置。

它不起作用。我的设置无法保存。但是当我尝试将字符串保存为设置时,它确实有效。

所以我真的很想知道为什么它不适用于数据表。保存数据库会让我更容易,所以对此或任何替代解决方案的任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:6)

您可以将DataTable作为XML字符串保存到普通的String设置中,如下所示:

 StringWriter writer = new StringWriter();
 table.WriteXml(writer);
 Settings.Default.TableXml = writer.ToString();

然后您可以从以下设置加载它:

 StringReader reader = new StringReader(Settings.Default.TableXml);
 table.ReadXml(reader);

答案 1 :(得分:1)

我相信在从ERP数据库对DataTable执行LINQ查询时遇到了同样的问题。在查询结果上使用CopyToDataTable()方法并将其分配给settingTable设置后,我验证了resultTablesettingTable都不是null,运行Settings.Default.Save()方法。但是,当我随后尝试将null分配给settingTable变量时,收到了dataTable错误。

我通过在运行settingTable.TableName方法之前将null属性分配给默认值(Settings.Default.Save()字符串)之外的其他东西来解决了这个问题。

注意:ERP系统的运行速度很慢,我只需要使用ERP的业务对象直接查询数据即可。

答案 2 :(得分:0)

不幸的是,以上解决方案对我不起作用(缺少根元素的例外)。 我必须进行此调整。

创建XML字符串:

 StringWriter writer = new StringWriter();
 table.WriteXml(writer, XmlWriteMode.WriteSchema); //WriteSchema
 Settings.Default.TableXml = writer.ToString();

从Xml字符串创建DataTable

 StringReader reader = new StringReader(Settings.Default.TableXml);
 table.ReadXml(reader);

希望这可以帮助其他有相同问题的用户;)