SQL delete 命令删除表中的所有条目

MrV*_*vis 1 c# sql sql-server

我有一个使用 SQL 命令与数据库交互的应用程序。命令之一是删除函数,语法正确,当我在数据库中运行它时,如果我在应用程序中调用它,它会删除所有数据。

这是创建查询的函数:

public void RemoveElement(string Language, long OrderID) {
   ConnectionString = CreateConnectionstring();

   string Query = @"DELETE FROM [dbo].[Orders] WHERE ([OrderID]=OrderID);";
   using (Command = new SqlCommand(Query, ConnectionString)){
       Command.Parameters.AddWithValue("@OrderID", OrderID);
       SqlExecution(Language, ConnectionString, Command);
   }
}
Run Code Online (Sandbox Code Playgroud)

这是执行查询的函数:

private void SqlExecution(string Language,SqlConnection ConnectionString, SqlCommand Command){
    try {
        ConnectionString.Open();
        Command.ExecuteNonQuery();
        Command.Dispose();
        // ...
    }
    //after this line they are message alerts to inform user about success or failure of the action
}
Run Code Online (Sandbox Code Playgroud)

OrderID 是 PK,查询按原样执行(没有错误或错误数据),但它不会只删除选定的订单,而是删除所有内容(我使用了 quickwatch 和调试器,并显示只有选定的订单 ID 被传递。

提前致谢!

Les*_*zur 6

在您的查询中,[OrderID]=OrderIDOrderID 列等于 OrderID 列,因此删除 OrderID 不为空的每一行。如果您想将参数传递给查询,您应该在它的名称之前放置@。尝试:

string Query = @"DELETE FROM [dbo].[Orders] WHERE [OrderID] = @OrderID;";
Run Code Online (Sandbox Code Playgroud)

  • 虽然你的答案是正确的,但我犹豫是否要投票这么短的答案。如需额外积分,请向OP解释*他们做错了什么*以及*为什么*/*如何*你的答案解决了他们的问题 (3认同)