将一行“数据”从一个C#控制台应用程序传递到另一个C#控制台应用程序的最佳方法是什么?

时间:2008-10-06 23:06:37

标签: c# sql console

我有一个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?

干杯!

3 个答案:

答案 0 :(得分:3)

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

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

使用DataTable.WriteXml方法将DataTable序列化为XML非常简单。

答案 1 :(得分:1)

如果您使用Process.Start,则以空格分隔的方法很好 - 您只需要包含带引号的空格的项目 - 与命令行相同:cd“c:\ program files”

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

答案 2 :(得分:1)

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