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最初の使用で壊れている場合は開始されていないと思いますが、使用された行でnullではないことを確認できますか? はいの場合、次のような例外をキャッチして投稿します。

 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 に答える