2015-11-05 106 views
0

我寫它包含一個SQL查詢代碼。 SQL查詢工作正常(因爲我可以看到數據庫的作用)。但是我想顯示SQL的消息。當我們運行SQL服務器上此查詢,它提供了以下信息,我們理解查詢已正確執行:「查詢已成功爲用戶XXX執行」 打印SQL查詢消息

下面是我對SQL查詢執行的正常工作編寫的代碼,但我希望能夠打印我提到的上述消息。

 //SQL Server Connection 
     string con_str_reenable = "Data Source=SQLSERVER;Initial Catalog=DATABASE;Integrated Security=True"; 
     SqlConnection con_db_reenable = new SqlConnection(con_str_reenable); 

     //SQL Query: 
     string reenable_query="The query is pasted here(Exec **** XXX)"; 
     SqlCommand rep_com = new SqlCommand(reenable_query, con_db_reenable); 

     try 
     { 
      SqlDataAdapter sda1 = new SqlDataAdapter(); 
      sda1.SelectCommand = rep_com; 
      DataTable dbdataset1 = new DataTable(); 
      sda1.Fill(dbdataset1); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, "Error"); 
     } 
    } 

請幫助我在不更改上面的SQL訪問代碼的情況下打印消息。

感謝

回答

0

這正是SSMS顯示器。您可以做類似的事情,比如執行的ExecuteNonQuery返回受影響的行數 - 這樣你就可以打印一個信息「更新記錄x個」。

與填充一個DataTable,你可以打印出你的榜樣「查詢已成功執行了用戶XXX」每次有也不例外時間。

0

嘗試InfoMessage event in SqlConnection

微軟的樣本:

// Assumes that connection represents a SqlConnection object. 
connection.InfoMessage += new SqlInfoMessageEventHandler(OnInfoMessage); 

protected static void OnInfoMessage(object sender, SqlInfoMessageEventArgsargs) { 
    foreach (SqlError err in args.Errors) { 
     Console.WriteLine("The {0} has received a severity {1}, state {2} error number {3}\non line {4} of procedure {5} on server {6}:\n{7}", 
      err.Source, err.Class, err.State, err.Number, err.LineNumber, err.Procedure, err.Server, err.Message); 
    } 
} 

當然,你可以使用ExecuteNonQuery方法返回的行數是如何處理。

0

我從你的問題的理解,你可以使用string.Format

例如:

//Declare variable for storing user string 
string username = "xxx"; //You can always change it later 

string reenable_query= string.Format("Exec procedure_name @parameter = {0}",username); //{0} will be replaced by the username 

SqlCommand rep_com = new SqlCommand(reenable_query, con_db_reenable); 

    try 
    { 
     SqlDataAdapter sda1 = new SqlDataAdapter(); 
     sda1.SelectCommand = rep_com; 
     DataTable dbdataset1 = new DataTable(); 
     sda1.Fill(dbdataset1); 

     //Show Message *Add here 
     string show = string.Format("The query has been executed successfully for the user {0}", username); 

     MessageBox.Show(show); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message, "Error"); 
    } 

但我建議使用執行查詢的一個不同的方法,你當前的代碼是從SQL注入保護,我建議你這樣做

using (SqlConnection connect = new SqlConnection()) 
{ 
    DataSet tmp = new DataSet(); 

    connect.ConnectionString = conString; 

    connect.Open(); 

    SqlDataAdapter adapter = new SqlDataAdapter(*your query*, connect); 

    adapter.Fill(tmp); 
} 
+0

我想打印SQL查詢的實際消息。現在,我使用的String.Format作爲一種變通方法,但我想要得到的確切消息。 –

+0

您可以使用[SqlConnection.InfoMessage](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.infomessage.aspx) –