SQL DELETEステートメントで複数の条件

アルスラーンハイダー:

私は、Webアプリケーション用のMySQLとの組み合わせでJavaを使用しています。私はこの文が正常に動作するかどう聞きしたかったのです。

String delete="DELETE FROM `eoms`.`order` WHERE (`employeeID` = '"+eID+"', orderTime = '"+mealName+"', orderDate = '"+curDate+"');";
ティムBiegeleisen:

はい、あなたの削除クエリは動作するはずですが、あなたは準備されたステートメントを使用する必要があります。

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.");

サイドノート:あなたのテーブル(および他のデータベース・オブジェクト)を命名するなど、予約済みのSQLキーワードの使用は避けてくださいorderあなたは永遠にあなたのエスケープする必要がありますorderバッククォートでテーブルを。また、あなたが別の列にオーダー日時を格納していることが表示されます。これはおそらくベストプラクティスではありません、そしてあなただけのオーダーのための単一のdatetime列を使用して検討すべきです。最後に、おそらくあなたは、3つのすべての制約のために意図WHERE同時に適用する句。もしそうなら、単に交換ORAND

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=291902&siteId=1