if语句中的代码突然离开

时间:2012-11-14 14:26:37

标签: java sql servlets if-statement

我有一个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只是出于调试目的,任何帮助将不胜感激。

3 个答案:

答案 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