我编写了一个包含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访问代码的情况下打印邮件。
由于
答案 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);
}