有人可以解释这个删除命令有什么问题,我试图从我的表中删除一行,其中包含有关航班的一些信息,然后用新的替换它。插入工作正常但删除不起作用。任何帮助都会非常感谢
OleDbCommand deleteCmd = new OleDbCommand();
sqlStr = "DELETE FROM tblFlights WHERE Arrivals = '" + arrival + "'";
connection.Open();
// delete setup
deleteCmd.Connection = connection;
deleteCmd.CommandText = sqlStr;
//activate the deletion
dataAdapter.DeleteCommand = deleteCmd;
如果需要,可以提供更多信息
答案 0 :(得分:2)
您实际上并未运行该命令。你错过了这个:
deleteCmd.ExecuteNonQuery();
此外,您可能希望注意SQL注入。
答案 1 :(得分:1)
请不要这样做,因为它容易SQL injection
答案 2 :(得分:1)
编辑:如上所述,您需要:
deleteCmd.ExecuteNonQuery();
用于实际执行的命令。
到货是一个字符串?如果是这样,那么在比较时尝试修剪两个值:
sqlStr = "DELETE FROM tblFlights WHERE LTRIM(RTRIM(Arrivals)) = LTRIM(RTRIM('" + arrival + "'))";
如果这不起作用,请执行以下选择并查看它返回的内容:
SELECT * FROM tblFlights WHERE Arrivals = 'Your Arrival'
答案 3 :(得分:1)
您的代码容易受到SQL注入攻击,请查看我自己的问题,了解如何防止此类攻击并使用安全查询 - Method Optimisation - C#