1

我对编程世界很陌生(对不起,如果这个问题已经被回答了很多次,至少我没有从搜索互联网中得到任何线索),我最近正在尝试构建一个 C sharp 应用程序。这个exe会在另一个程序中被调用,调用时,程序会传递一个sql连接字符串值给c sharp exe app。我的问题是如何让应用程序获得价值。

连接字符串应该看起来像

“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 对象错误”。任何想法?请指教。

[解决了]

我使用了 oledbconnection 而不是 adodb,它可以正常工作。感谢所有帮助过的人。

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 回答