1

私はプログラミングの世界に非常に慣れていません(この質問に何度も回答されている場合は申し訳ありませんが、少なくともインターネットを検索しても手がかりが得られませんでした)、最近Cシャープアプリを構築しようとしています。このexeは別のプログラムで呼び出され、呼び出し時に、プログラムはSQL接続文字列値をcsharp exeアプリに渡します。私の質問は、アプリに値を受け取る方法です。

接続文字列は次のようになります

“Provider=SQLOLEDB.1;Password=xxxxxxxx;Persist Security Info=True;User
ID=xxxxxxxx;Initial Catalog=ATTACH;Data Source=LNGSEAL136504A;
Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation 
ID=LNGSEAL136504A;Use Encryption for Data=False;Tag with column collation when 
possible=False”

私が書いたもの: これが私のコードです: class Program { static void Main(string[] args) { Console.WriteLine("its running!"); Console.ReadKey(); 試す {

            int Len;
            string cnn = null;
            Len = args.Length;
            for (int i = 0; i < args.Length; i++)
            {
                cnn = cnn + " " + args[i];
            }
            Console.WriteLine(cnn);
            Console.WriteLine(Len);               

            Console.ReadKey();

            ADODB.Connection mycnn = new ADODB.Connection();
            mycnn.Open(cnn);
            ADODB.Recordset rs = new ADODB.Recordset();
            rs.Open("sql statements", mycnn);



            mycnn.Close();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
            Console.ReadKey();
        }
    }
}

しかし、「comオブジェクトエラーをキャストできません」というメッセージが表示されます。何か案が?お知らせ下さい。

【解決済み】

adodb の代わりに oledbconnection を使用しましたが、問題なく動作します。助けてくれたみんなに感謝します。

4

2 に答える 2

5

コマンド ライン引数を介して接続文字列を渡すことができ (ソース アプリケーションが実行可能ファイルを呼び出すために使用する手法を使用)、受信側実行可能ファイルの関数args内の配列からそれらを取得できます。Main(string[] args)

たとえば、受信側では次のようになります。

class TestClass
{
    static void Main(string[] args)
    {
        // avoiding empty/null checks for simplicity
        string connectionString = args[n]; // where "n" is index value of your
                                           // connection string argument

        DoWork(connectionString);
    }
}

それを念頭に置いて、あなたが求めていることを達成するためのより良い方法があるかもしれません. あなたのプロジェクトをもう少し詳しく説明していただければ、代わりの提案を提供できるかもしれません。

于 2012-05-17T20:34:11.363 に答える
0

それはC#で非常に簡単です

Process.start("接続文字列を送信するexeパス","接続文字列");を使用して送信側アプリケーションで

レシーバーアプリケーションとメインメソッドのexe(プログラムクラスに組み込まれています)

main(string[] args)

args[0] は、他のプログラムから送信された接続文字列を保持します。

試す ..

于 2012-05-17T20:42:09.597 に答える