3

SQL Server 2005 DBのテーブルからデータの行を読み取るC#コンソールアプリ「App1」があります。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.

これにはいくつかの欠陥があります。行のエントリの1つが「myVar」ではなく「myvar」だった場合はどうなりますか?また、アイテムの順序は受信アプリ(App2)でハードコーディングされます。

では、これを行うための最良の方法は何ですか?コマンドラインを介してxml文字列をApp2に渡すのは適切でしょうか?

乾杯!

4

3 に答える 3

3

1つのアプローチは、行を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として)をファイルに書き込み、2番目のアプリにファイルからデータをロードさせます。

于 2008-10-06T23:12:20.450 に答える
1

シリアル化されたDataSetを使用すると、多くのカスタムコードを記述しなくても、ある場所から別の場所にデータを簡単に取得できます。デフォルトのDataSetにはすでに必要なメソッドが用意されているためです(たとえば、.WriteXMLはDataSetをXMLにシリアル化し、ファイル)。次に、他のアプリケーションが適切なディレクトリをポーリングして新しいファイルを探すことができます。

于 2008-10-06T23:14:29.760 に答える