2008-10-06 67 views
3

我有一個C#控制檯應用程序「App1」,它從SQL Server 2005數據庫中的表中讀取一行數據。我希望App1將此行中的所有數據傳遞給另一個C#控制檯應用程序App2。做這個的最好方式是什麼?將一行「數據」從一個C#控制檯應用程序傳遞到另一個C#控制檯應用程序的最佳方式是什麼?

我的第一個(幼稚)嘗試是要做到這一點:

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. 

這有一定的缺陷:如果在該行中的一個條目是「我的變種」,而不是「myVar的」?此外,項目的順序將在接收應用程序(App2)中進行硬編碼。

那麼最好的辦法是什麼?通過命令行將xml字符串傳遞給App2會合適嗎?

乾杯!

回答

3

一個辦法是到該行序列化到XML和使用,除了DataRow的(缺少默認構造函數)不能被序列化。相反,您必須創建一個新的DataTable並將其添加到它。

然後,你可以簡單地序列化整個數據表到XML並把它傳遞到其他應用程序,無論是作爲命令行參數或保存XML的文件,並通過文件名。

由於採用了DataTable.WriteXml方法,將DataTable序列化爲XML非常簡單。

1

空間分隔的方法是好的,如果你正在使用的Process.Start - 你只需要包裝包含引號空間項目 - 同在命令行:CD「C:\ Program Files文件」

如果數據比一些值更復雜,那麼IPC方法(如遠程處理,套接字,WCF等)可能會有所幫助。或者更簡單:將數據(可能是xml)寫入文件,然後讓第二個應用程序從文件中加載數據。

1

您可以使用序列化的DataSet輕鬆地將數據從一個位置獲取到另一個位置,而無需編寫大量定製代碼,因爲默認DataSet已經提供了必要的方法(例如,.WriteXML會將DataSet序列化爲XML並寫入一個文件)。然後您的其他應用程序可以輪詢適當的目錄以查找新文件。