C# 错误sqlcommand.ExecuteOnQuery()
我的sql server 2008数据库中有一个表 此表有2条记录,用户名=讲师 现在我想删除用户名为讲师的所有评论: 首先,我在SQL Server中测试查询: 从USERNAME='讲师'->正常工作的评论中删除:删除了2条记录 然后我在我的c代码中应用了该查询:C# 错误sqlcommand.ExecuteOnQuery(),c#,sql,sql-server,C#,Sql,Sql Server,我的sql server 2008数据库中有一个表 此表有2条记录,用户名=讲师 现在我想删除用户名为讲师的所有评论: 首先,我在SQL Server中测试查询: 从USERNAME='讲师'->正常工作的评论中删除:删除了2条记录 然后我在我的c代码中应用了该查询: public bool delete(string userdeleted) { string sql="DELETE FROM COMMENT WHERE USERNAME="+userdeleted; //userde
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:{无效的列名'讲师'。}行sqlcommand.ExecuteOnQuery
救命啊!!!为什么即使在SQL SERVER中运行良好,代码也无法运行?我怀疑userdeleted的值只是讲师而不是讲师。因此,您的SQL语句是:
DELETE FROM COMMENT WHERE USERNAME=lecturer
这是最直接的问题——它正在寻找一个名为讲师的专栏。如果在SQLServerStudio中或之前测试的任何地方使用该SQL,则会出现相同的错误
但是,您不应该只添加引号-您应该使用参数化SQL:
string sql="DELETE FROM COMMENT WHERE USERNAME=@username";
...
sqlcommand.Parameters.Add("@username", SqlDbType.NVarChar).Value = userdeleted;
参数化SQL在许多方面都很重要:
它有助于预防
它使SQL更加清晰,不会导致大量的连接,并解决了这样的引用问题
它避免了转换问题,特别是对于日期/时间值
我怀疑userdeleted的值只是讲师而不是讲师。因此,您的SQL语句是:
DELETE FROM COMMENT WHERE USERNAME=lecturer
这是最直接的问题——它正在寻找一个名为讲师的专栏。如果在SQLServerStudio中或之前测试的任何地方使用该SQL,则会出现相同的错误
但是,您不应该只添加引号-您应该使用参数化SQL:
string sql="DELETE FROM COMMENT WHERE USERNAME=@username";
...
sqlcommand.Parameters.Add("@username", SqlDbType.NVarChar).Value = userdeleted;
参数化SQL在许多方面都很重要:
它有助于预防
它使SQL更加清晰,不会导致大量的连接,并解决了这样的引用问题
它避免了转换问题,特别是对于日期/时间值
哈哈,比我先到那里+我的朋友!哈哈,比我先到那里+我的朋友!考虑使用Sql连接和Sql命令对象。IE,使用var SQL连接= new…考虑使用一个Sql连接和Sql命令对象。ie,使用var sqlConnection=new。。。