3

我有一个 C# 控制台应用程序“App1”,它从 SQL Server 2005 数据库中的表中读取一行数据。我希望 App1 将这一行中的所有数据传递给另一个 C# 控制台应用程序 App2。做这个的最好方式是什么?

我的第一个(天真的)尝试是这样做:

object[] o = myrow.ItemArray;
// make a string that separates each item by a space... for example "1 2 myVar".
// pass this string to App2 via command line.

这有一些缺陷:如果行中的条目之一是“my var”而不是“myVar”怎么办?此外,项目的顺序将在接收应用程序 (App2) 中进行硬编码。

那么最好的方法是什么?通过命令行将 xml 字符串传递给 App2 是否合适?

干杯!

4

3 回答 3

3

一种方法是将行序列化为 XML 并使用它,但不能序列化 DataRow(缺少默认构造函数)。相反,您必须创建一个新的 DataTable 并将该行添加到其中。

然后,您可以简单地将整个 DataTable 序列化为 XML 并将其作为命令行参数或通过将 XML 保存到文件并传递文件名来传递给其他应用程序。

借助DataTable.WriteXml方法,将 DataTable序列化为 XML 非常简单。

于 2008-10-06T23:13:22.710 回答
1

如果您使用的是 Process.Start,则空格分隔的方法很好 - 您只需将包含空格的项目用引号括起来 - 与命令行相同: cd "c:\program files"

如果数据比几个值更复杂,那么远程处理、套接字、WCF 等 IPC 方法可能会有所帮助。或者更简单:将数据(可能是 xml)写入文件,然后让第二个应用程序从文件中加载数据。

于 2008-10-06T23:12:20.450 回答
1

您可以使用序列化的 DataSet 轻松地将数据从一个地方获取到另一个地方,而无需编写大量自定义代码,因为默认 DataSet 已经提供了必要的方法(例如 .WriteXML 会将 DataSet 序列化为 XML 并写入文件)。然后,您的其他应用程序可以轮询适当的目录以查找新文件。

于 2008-10-06T23:14:29.760 回答