0

我有一个 if 语句,我已经用断点检查了我的程序正在输入 if 语句,并且确实如此。我可以一直执行我的语句,直到我到达准备语句行,然后我的 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 仅用于调试目的,任何帮助将不胜感激。

4

3 回答 3

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");
 }
于 2012-11-14T14:30:19.017 回答
1

如果您“随机”突破一个块,则可能意味着您正在抛出异常。如果在您尝试创建 PreparedStatement 时失败,则可能是 SQL 无效或您无法建立连接。

然而,Aws @Marko 指出,您的 SQL 语句看起来确实有效。所以我会检查con对象。但是,您应该能够检查异常的堆栈跟踪以获取更多有用的信息,而不仅仅是猜测。

于 2012-11-14T14:28:14.363 回答
0

prepareStatement 抛出一个 SQLException,所以用 try/catch 包围它,看看这是否是你的问题。

http://docs.oracle.com/javase/6/docs/api/java/sql/Connection.html#prepareStatement(java.lang.String )

于 2012-11-14T14:30:56.100 回答