[英]Error sqlcommand.ExecuteNonQuery()
我的sql server 2008
数据库中有一个表
COMMENT(idcom,content,username);
该表有2条记录,其中username
= lecturer
现在,我要删除所有具有用户名=讲师的评论:
首先,我在SQL Server中测试查询:
DELETE FROM COMMENT WHERE USERNAME='lecturer'
->正常:删除了2条记录。
然后我在我的C#代码中应用了该查询:
public bool delete(string userdeleted)
{
string sql="DELETE FROM COMMENT WHERE USERNAME="+userdeleted; //userdeleted= lecturer
try
{
SqlConnection sqlconnection = new SqlConnection();
SqlCommand sqlcommand = new SqlCommand();
sqlconnection.ConnectionString = connstring;
sqlconnection.Open();
sqlcommand.Connection = sqlconnection;
sqlcommand.CommandType = CommandType.Text;
sqlcommand.CommandText = sql;
sqlcommand.ExecuteNonQuery();
sqlconnection.Close();
sqlcommand.Dispose();
return true;
}
catch (Exception)
{
return false;
}
}
}
当我构建该代码时,程序会在catch
语句内跳转并返回false ???。
尝试调试,它有一个错误: $exception:{"Invalid column name 'lecturer'."}
在sqlcommand.ExecuteNonQuery();
。
救命!!! 为什么代码不起作用,甚至在SQL SERVER中也能正常工作???
我怀疑userdeleted
的价值只是lecturer
而不是'lecturer'
。 因此,您的SQL语句为:
DELETE FROM COMMENT WHERE USERNAME=lecturer
那是眼前的问题-它正在寻找一个名为lecturer
的专栏。 如果在SQL Server Studio中(或之前进行过测试的任何地方)使用该SQL,您将收到相同的错误。
但是,您不应该只添加引号-您应该使用参数化的SQL:
string sql="DELETE FROM COMMENT WHERE USERNAME=@username";
...
sqlcommand.Parameters.Add("@username", SqlDbType.NVarChar).Value = userdeleted;
参数化SQL在许多方面都很重要:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.