Java 在预处理语句中使用where子句的SQL查询

Java 在预处理语句中使用where子句的SQL查询,java,mysql,sql-server,database,Java,Mysql,Sql Server,Database,我在一个大门入口系统上工作,在这个系统中我插入时间和超时。在为超时编写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 E

我在一个大门入口系统上工作,在这个系统中我插入时间和超时。在为超时编写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();

您需要
更新现有行

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

您需要
更新现有行

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

这不是
insert
语句的工作方式。如果要更新现有记录,则需要
update
语句:

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

这不是
insert
语句的工作方式。如果要更新现有记录,则需要
update
语句:

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

insert语句中有一个
WHERE
子句引用同一条记录是没有意义的。我建议订立以下守则:

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();

insert语句中有一个
WHERE
子句引用同一条记录是没有意义的。我建议订立以下守则:

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();

您可以更新或更改insert语句,如下所示:

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

您可以更新或更改insert语句,如下所示:

"insert into ENTRY(OUTTIME) select col1 from ENTRY WHERE ENTRY.ROLLNUMBER='"+rollno+"' AND ENTRY.OUTTIME ='NULL'"
使用此代码

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();
使用此代码

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();

为什么insert会有where语句?不应该是update语句吗?没有这样的语法。为什么insert会有where语句?它不应该是一个update语句吗?没有这样的语法。这个答案倾向于SQL注入。这个答案倾向于SQL注入。