这是我编辑过的代码......
java.sql.Timestamp sqlNow = new java.sql.Timestamp(new java.util.Date().getTime());
stmt = con.createStatement();
//stmt.executeUpdate("INSERT INTO cregn values('"+appno+"','"+usname+"','"+upwd +"','"+fname+"','"+mname+"','"+lname+"','"+dob+"','"+gend+"','"+faname+"','"+saddr+"','"+caddr+"','"+staddr +"','"+pin+"','"+cno+"','"+email+"','"+occ+"','"+secques+"','"+answer+"','Processing','"+sqlNow+"')");
pst = con.prepareStatement("INSERT INTO cregn (aplno, username, pwd, firstname,middlename,lastname, dob,gender, fathername, street,city,state, pincode, phone, email,occupation,secques,answer,dor) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
pst.setInt(1, appno);
pst.setString(2, usname);
pst.setString(3, upwd);
pst.setString(4, fname);
pst.setString(5, mname);
pst.setString(6, lname);
pst.setString(7, dob);
pst.setString(8, gend);
pst.setString(9, faname);
pst.setString(10, saddr);
pst.setString(11, caddr);
pst.setString(12, staddr);
pst.setString(13, pin);
pst.setString(14, cno);
pst.setString(15, email);
pst.setString(16, occ);
// pst.setString(17,ph);
pst.setString(17, secques);
pst.setString(18, answer);
pst.setTimestamp(19, sqlNow);
pst.executeUpdate();
out.println("Registration Successful for application " + appno);
} catch (Exception ee) {
out.println("Invalid Data! All fields are mandatory..." + ee.getMessage());
}
%>
执行此代码错误后显示“无效数据!所有字段都是强制性的...数据截断”
答案 0 :(得分:3)
您没有执行该声明。
您需要调用executeUpdate
答案 1 :(得分:2)
您必须在pst
上致电execute
或executeUpdate
才能真正开展工作。例如,最后:
pst.executeUpdate();
您显示的所有代码都是准备执行语句,它不会执行它。这是PreparedStatement
和Statement
之间的主要差异之一。在Statement
中,您将SQL传递给executeUpdate
直接执行(如使用stmt
在注释掉的行中所示)。使用PreparedStatement
,您可以使用?
提供SQL,设置这些参数,然后调用executeUpdate
(或execute
),你没有做过。
答案 2 :(得分:0)
executeUpdate()
上没有调用pst
。
答案 3 :(得分:0)
使用pst.executeUpdate();
执行查询,并确保在事务中使用setAutoCommit(true)
必须被调用。