我目前尝试使用旧的“properties.settings.default.save()”方法将数据表保存为用户设置。
它不起作用。我的设置无法保存。但是当我尝试将字符串保存为设置时,它确实有效。
所以我真的很想知道为什么它不适用于数据表。保存数据库会让我更容易,所以对此或任何替代解决方案的任何帮助将不胜感激!
答案 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
设置后,我验证了resultTable
和settingTable
都不是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);
希望这可以帮助其他有相同问题的用户;)