2015-11-05 133 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) –