2017-12-30 45 views
0

私はインタイムとアウトタイムを挿入しているゲート入力システムで作業しています。 out-timeのためにsqlクエリを書く間、WHERE句でエラーを表示しています。私はエラーを解決することができません。正確なSQLクエリは何でしょうか?プリペアドステートメントのwhere句を使用したSQLクエリ

java.util.Date date = new java.util.Date(); 
java.sql.Timestamp sqlTime = new java.sql.Timestamp(date.getTime()); 
PreparedStatement ps = con.prepareStatement("insert into ENTRY(OUTTIME) values(?,?,?,?) WHERE (ENTRY.ROLLNUMBER='"+rollno+"' AND ENTRY.OUTTIME ='NULL')"); 
ps.setTimestamp(4,sqlTime); 
ps.executeUpdate(); 
+3

はなぜインサートは、どこの文を持っているでしょうか?それは更新ステートメントではありませんか? – MadProgrammer

+0

このような構文はありません。 – Ravi

答えて

1

あなたはこれがinsert文がどのように動作するかではありません

PreparedStatement ps = con.prepareStatement("UPDATE ENTRY SET OUTTIME =? WHERE ROLLNUMBER=?"); 
ps.setTimestamp(1,sqlTime); 
ps.setString(2, rollno); 
1

既存の行をUPDATEする必要があります。それが戻って同じレコードを指しWHERE句を持つINSERTステートメントの意味がありません

PreparedStatement ps = 
    con.prepareStatement("UPDATE entry SET outtime = ? WHERE rollbumber = ?"); 
ps.setTimestamp(1, sqlTime); 
ps.setInt(2, myRollNo); 
1

:既存のレコードを更新する場合は、update文を必要とするだろう。私は、次のコードを提案:

java.sql.Timestamp sqlTime = new java.sql.Timestamp(date.getTime()); 
String sql = "INSERT INTO ENTRY(OUTTIME) VALUES (?)"; 
PreparedStatement ps = con.prepareStatement(sql); 
ps.setTimestamp(1, sqlTime); 
ps.executeUpdate(); 
1

は、あなたが以下のようにあなたのINSERT文を更新または変更するか:

"insert into ENTRY(OUTTIME) select col1 from ENTRY WHERE ENTRY.ROLLNUMBER='"+rollno+"' AND ENTRY.OUTTIME ='NULL'" 
0

を使用し、このコード

java.util.Date date = new java.util.Date(); 
java.sql.Timestamp sqlTime = new java.sql.Timestamp(date.getTime()); 
PreparedStatement ps = con.prepareStatement("update ENTRY set OUTTIME= ? WHERE ENTRY.ROLLNUMBER='"+rollno+"' AND ENTRY.OUTTIME is NULL"); 
ps.setTimestamp(4,sqlTime); 
ps.executeUpdate(); 
+0

この回答はSQLインジェクションの傾向があります。 –

関連する問題