SQL Delete 语句中的多个条件

Ars*_*der 3 java mysql sql sql-delete

我将 java 与 mysql 结合用于 Web 应用程序。我想问一下这个语句是否可以正常工作。

String delete="DELETE FROM `eoms`.`order` WHERE (`employeeID` = '"+eID+"', orderTime = '"+mealName+"', orderDate = '"+curDate+"');";
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 5

是的,您的删除查询应该可以工作,但您应该使用准备好的语句:

String delete = "DELETE FROM `eoms`.`order` WHERE employeeID = ? OR orderTime = ? OR orderDate = ?";
PreparedStatement ps = conn.prepareStatement(delete);
ps.setInt(1, eID);
ps.setTime(2, orderTime);
ps.setDate(3, curDate);
int row = ps.executeUpdate();
System.out.println(row + " rows were deleted.");
Run Code Online (Sandbox Code Playgroud)

旁注:请避免使用保留的 SQL 关键字(如order. 你将永远不得不以order反引号逃离你的桌子。此外,您似乎将订单时间和日期存储在单独的列中。这可能不是最佳实践,您应该考虑仅对订单使用单个日期时间列。最后,也许您打算WHERE同时应用条款中的所有三个限制。如果是这样,那么只需ORAND.