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

tjvv9vkg  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(425)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

11个月前关门了。
改进这个问题
我有一个应用程序,它使用sql命令与数据库交互。其中一个命令是delete函数,语法正确,当我在数据库中运行它时,如果我在应用程序中调用它,它会删除所有数据。
这是创建查询的函数:

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);
   }
}

这是执行查询的函数:

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
}

orderid是pk,查询按原样执行(没有错误或错误数据),但它不是只删除选定的顺序,而是删除所有内容(我使用了quickwatch和debugger,并显示只传递选定的orderid)。
提前谢谢!

s2j5cfk0

s2j5cfk01#

在您的查询中 [OrderID]=OrderID 表示列orderid等于列orderid,因此删除orderid不为空的每一行。如果要传递参数进行查询,应该在其名称前加@。尝试:

string Query = @"DELETE FROM [dbo].[Orders] WHERE [OrderID] = @OrderID;";
mu0hgdu0

mu0hgdu02#

您是否尝试将查询更改为:

string Query = @"DELETE FROM [dbo].[Orders] WHERE ([OrderID]=@OrderID);";

ps:查询之所以删除all是因为删除了orderid等于orderid(so all)的所有条目,当它是外键时,语法很有用,例如:orderid=customer.orderid(customer是另一个表)

相关问题