0

我正在处理多层客户端-服务器应用程序的 .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)
}

*免责声明:实际逻辑远非如此粗略,但最终结果是相同的。

我想知道是否有人有更好的解决方案将更新的数据重新输入数据库......?

谢谢,

4

1 回答 1

0

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

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

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);
于 2009-03-23T19:55:19.330 回答