我有一个使用 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 被传递。
提前致谢!
在您的查询中,[OrderID]=OrderIDOrderID 列等于 OrderID 列,因此删除 OrderID 不为空的每一行。如果您想将参数传递给查询,您应该在它的名称之前放置@。尝试:
string Query = @"DELETE FROM [dbo].[Orders] WHERE [OrderID] = @OrderID;";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |