在C#中打印SQL查询消息

时间:2015-11-05 07:13:50

标签: c# sql sql-server

我编写了一个包含SQL查询的代码。 SQL查询工作正常(因为我可以看到对数据库的影响)。但我想展示SQL的消息。当我们在SQL服务器上运行此查询时,它会给出下面的消息,我们理解查询已正确执行: "已成功为用户xxx执行了查询。"

下面是我为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访问代码的情况下打印邮件。

由于

3 个答案:

答案 0 :(得分:0)

这就是SSMS显示的内容..您可以执行类似的操作,例如执行ExecuteNonQuery会返回受影响的行数 - 因此您可以打印消息" x更新的记录数" 。

在填充DataTable的示例中,您可以打印出"查询已成功执行,用户xxx"每次都没有异常。

答案 1 :(得分: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方法返回已处理的行数。

答案 2 :(得分: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);
}
相关问题