2012-05-07 62 views
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(); 
+1

爲什麼你執行了該shutdown.exe的程序? –

+0

oops..just糾正了錯誤 – coder16

+1

你的代碼有什麼問題? – Marco

回答

2

因爲你必須執行一個SQL腳本,您可以使用的SqlConnection和SqlCommand的獲得輸出,而不是在開始分離過程。

檢查這個答案與其他答案在這個問題上的一些例子:https://stackoverflow.com/a/949933/559144

+0

謝謝,達維德,很棒的回答。但是我怎樣才能通過使用我的技術得到它? – coder16

0

我看你不希望使用SqlConnectionSqlCommand ...
我不知道,但它可能是你的過程在你輸出之前退出。
試試這個:

proc.Start();  
string s = proc.StandardOutput.ReadToEnd(); 
+0

不起作用... – coder16

+0

@ coder16:*不起作用*意味着什麼:會發生什麼? – Marco

+1

@ coder16,如果「某些」未按預期運行,您可能還希望啓用並從「StandardError」中讀取。 – Tung