我有一个if语句,我用断点检查过我的程序正在输入if语句,而且是。我可以完成我的陈述,直到我到达prepare语句行,然后我的if语句似乎无缘无故地突破并且没有在我的准备语句下执行任何代码。我搜索了我的问题,无法得到任何解决方案。
if(entry != null && subNum.equals(1) && rs.getRow() == 1)
{
String blogID = rs.getString(1);
String timeStamp = rs.getString(2);
java.util.Date date= new java.util.Date();
String tStamp = new Timestamp(date.getTime()).toString();
query = "INSERT INTO blog_entries VALUES (?, ?, ?, ?, ?)";
ps = con.prepareStatement(query);
ps.setString(1, entry);
out.print(entry);
ps.setString(2, timeStamp);
out.print(timeStamp);
ps.setString(3, tStamp);
out.print(tStamp);
ps.setString(4, entry);
out.print(entry);
ps.setString(5, blogID);
out.print(blogID);
ps.executeUpdate();
out.println("Submit Successful");
}
out.prints只是出于调试目的,任何帮助将不胜感激。
答案 0 :(得分:2)
我猜con
如果在第一次使用它时就不会启动,你可以确认它在使用它的行上不为空吗?如果是捕获并发布异常,如:
if(entry != null && subNum.equals(1) && rs.getRow() == 1)
{
String blogID = rs.getString(1);
String timeStamp = rs.getString(2);
java.util.Date date= new java.util.Date();
String tStamp = new Timestamp(date.getTime()).toString();
query = "INSERT INTO blog_entries VALUES (?, ?, ?, ?, ?)";
try{
if (con != null)
{
ps = con.prepareStatement(query);
ps.setString(1, entry);
out.print(entry);
ps.setString(2, timeStamp);
out.print(timeStamp);
ps.setString(3, tStamp);
out.print(tStamp);
ps.setString(4, entry);
out.print(entry);
ps.setString(5, blogID);
out.print(blogID);
ps.executeUpdate();
} else {
// print error and break }
}
catch (Exception e){
//print error message
}
out.println("Submit Successful");
}
答案 1 :(得分:1)
如果你“随机”突破一个区块,这可能意味着你正在抛出异常。如果在尝试创建PreparedStatement时失败,那么可能是SQL无效或者您无法建立连接。
Aws @Marko指出,您的SQL语句看起来确实有效。所以我会检查con
对象。但是,您应该能够检查异常的堆栈跟踪以获取更多有用的信息,而不仅仅是猜测。
答案 2 :(得分:0)
preparedStatement会抛出一个SQLException,所以用try / catch包围它是否是你的问题。
http://docs.oracle.com/javase/6/docs/api/java/sql/Connection.html#prepareStatement(java.lang.String)