如何让ADO.NET使用持久的XML ADO记录集进行更新

时间:2009-03-23 19:38:22

标签: com ado.net xml-serialization recordset

我正在进行多层客户端 - 服务器应用程序的.NET 2.0转换。暂时,我们将服务器端转换为.NET,但将客户端应用程序保留在COM(VB6)中。我目前的工作重点是从分离的基于COM的客户端获取数据 正在开发的当前版本使用ADO(COM)记录集作为XML持久化并发送给客户端。然后,客户端将XML加载到记录集对象中,以便对数据进行读/写访问。数据以相同的格式发送回服务器 在收到用于更新的持久XML记录集之后,我们进行了一些相当大的解析来生成UPDATE语句,这些语句通过ADO.NET推送到相应的更新源数据库。

(非常粗略)的伪代码:

adodb.recordset oRS = load(ADOXML)
for each rec in oRS
{
  string sSQL = "Update table set value = " + rec.ValueField + " where key = " + rec.KeyField
  executeNonQuery(sSQL)
}

*免责声明:实际逻辑远不及这个原油,但最终结果是一样的。

我想知道是否有人有更好的解决方案将更新后的数据恢复到数据库中?

谢谢,

1 个答案:

答案 0 :(得分:0)

在将所有行设置为已修改后,您是否考虑使用TableAdapter对数据执行更新?

如果您有预先配置的SQLTableAdapter,其中内置了更新函数,那么通过将表中的XML读入数据集,您可以从表适配器调用更新函数,以使用表中的每一行更新中央数据库。 / p>

var tableadapter = new MyTableAdapter();

var dataset = new MyDataSet();

dataset.ReadXml("c:\myxmldata.xml");

foreach(var row in dataset.tables[0].rows)
{
   row.SetModified();
}

tableadapter.Update(dataset);