**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
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)。
提前谢谢!
2条答案
按热度按时间s2j5cfk01#
在您的查询中
[OrderID]=OrderID
表示列orderid等于列orderid,因此删除orderid不为空的每一行。如果要传递参数进行查询,应该在其名称前加@。尝试:mu0hgdu02#
您是否尝试将查询更改为:
ps:查询之所以删除all是因为删除了orderid等于orderid(so all)的所有条目,当它是外键时,语法很有用,例如:orderid=customer.orderid(customer是另一个表)