0

我正在使用 sqlcmd (来自我的应用程序)查询 sql server 的版本,并想在富文本框中显示信息,例如,我该如何处理,这是代码:

        Process proc = new Process();
        proc.StartInfo.UseShellExecute = false;
        proc.StartInfo.RedirectStandardOutput = true;
        proc.StartInfo.FileName = "sqlcmd";
        proc.StartInfo.Arguments = @"-U sa -P somepassword -q 'SELECT @@VERSION' -S (localhost)\InstanceName";
        proc.Start();    


        StringBuilder q = new StringBuilder();
        while (!proc.HasExited)
        {
            q.Append(proc.StandardOutput.ReadToEnd());

        }
        string r = q.ToString();
        rtbCheckVersion.Text = r;
        proc.WaitForExit();
4

2 回答 2

2

由于您必须执行 sql 脚本,您可以使用 SqlConnection 和 SqlCommand 来获取输出,而不是启动一个单独的进程。

检查此问题中的此答案和其他答案以获取一些示例:https ://stackoverflow.com/a/949933/559144

于 2012-05-07T10:30:51.380 回答
0

我看到您不想使用SqlConnectionand SqlCommand...
我不确定,但可能是您的进程在获得输出之前就退出了。
尝试这个:

proc.Start();    
string s = proc.StandardOutput.ReadToEnd();
于 2012-05-07T10:36:48.530 回答