C# 如果sql请求成功,则显示消息
如果我的sql请求顺利完成,我想显示一条消息。在这一刻,我有代码为每个成功完成的请求显示MessageBox,但是如果没有用户名并且没有再次完成,那么它将显示相同的MessageBoxC# 如果sql请求成功,则显示消息,c#,sql,C#,Sql,如果我的sql请求顺利完成,我想显示一条消息。在这一刻,我有代码为每个成功完成的请求显示MessageBox,但是如果没有用户名并且没有再次完成,那么它将显示相同的MessageBox try { using (SqlConnection con = new SqlConnection(constring)) { con.Open(); using (SqlCommand command = new SqlCommand("DELETE FROM
try
{
using (SqlConnection con = new SqlConnection(constring))
{
con.Open();
using (SqlCommand command = new SqlCommand("DELETE FROM dbo.Admin WHERE UserName = '" + txtUserName.Text +"'", con))
{
command.ExecuteNonQuery();
MessageBox.Show("Successful operation!");
}
con.Close();
}
我怎样才能解决这个问题?我只想在sql请求有结果时显示成功的操作,而不是每次执行该命令时都显示成功的操作。您只需获得受影响的行数,如下所示:
var numbersOfAffectedRows = command.ExecuteNonQuery();
然后检查它是否大于零
if(numbersOfAffectedRows>0)
{
MessageBox.Show("Successful operation!");
}
查看方法的结果,它返回受影响的行数。因此,如果大于0,u可以显示消息框:
if(command.ExecuteNonQuery() > 0)
{
MessageBox.Show("Successful operation!");
}
在安全性方面,您的代码中还有另一个问题,您永远不应该通过连接普通用户输入来构建sql查询,而应该使用sql参数,您可以从以下链接了解更多关于sql参数和sql注入的信息:
using (SqlConnection con = new SqlConnection(constring))
{
con.Open();
using (SqlCommand command = new SqlCommand("DELETE FROM dbo.Admin WHERE UserName = '" + txtUserName.Text +"'", con))
{
if( command.ExecuteNonQuery() > 0)
MessageBox.Show("Successful operation!");
}
con.Close();
}
首先,您确实应该使用sql参数来避免潜在的sql注入攻击。Second
ExecuteNonQuery
返回生效的行数,这样您就可以知道行是否被删除。非常感谢。如果我想在messagebox没有删除某些内容时显示它,我能为这种情况做些什么?再次感谢你,不客气。如果受影响的行数等于零,则不会删除任何行,因此您应该在If语句的else部分添加“no rows deleted”消息。感谢您为我的安全性提供的建议。但就目前而言,这是一个复杂的大学项目组成部分。我真的很想知道如何使我的代码更安全、更受保护。我将查看这些链接。再次感谢你,祝你今天愉快。