アルスラーンハイダー:
私は、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
同時に適用する句。もしそうなら、単に交換OR
でAND
。