2010-11-29 18 views
0

私はJavaでの状況があります。whileループで例外を処理する方法は?

while(resultset.next()){ 
    try{ 
     //some executable prepared statements written 
    } 
    catch(MySQLIntegrityConstraintViolationException ex){ 
     //block2 
    } 
    catch(SQLException ex){ 
     //block1 
    } 
} 

今ここに、私は何をしようとしていることMySQLIntegrityConstraintViolationExceptionが見られた場合、私はそれをスキップして、ちょうど次のレコードを継続しなければならないということです... これを行うためのメカニズムが見つかりません。 誰かが何をすべきかを提案して、例外が無視されるようにしてください。

私に教えてください。事前におねがいします。

+4

これはあなたの** 16番目の**質問です。まだコードを書式設定していませんか?質問を入力した場所の右側にある**書式設定の方法**ボックスと入力したテキストボックスの上の** [?] **リンクを読んでください。あなたのために。 –

+0

@TJ、私はそれをフォーマットしました、それは私の目にはあまりにもハードでした:) –

+0

@RC:LOL! ..... –

答えて

0

私はあなたが他の例外を取得している場合は、

while(resultset.next()){ 
    try{ 
    //some executable prepared statements written 
    } 
    catch(Exception ex){ 
    if(ex instanceof MySQLIntegrityConstraintViolationException) 
    continue; 
    else 
    ex.printStackTrace(); 
    } 

} 
+0

preparedStatemet.execute()に問題があります。そして、その文を何度も実行しようとしています。流れがcatchブロックに移動すると、何も起こっていません。助けてください –

+0

はい、ex.printStackTrace();あなたは知り合いになるでしょう。問題はどこにありますか。例外はどこから得ていますか? –

1

はもっと自分のデータベースを理解見つけるために、次のやってみてください、あなたが他の例外を取得するかもしれないと思います。

ここには多くの問題があります。

1)あなたの準備された声明は取引に参加していますか? (つまり、ロールバックしますか?)
2)準備された文の更新行はありますか?
3)例外が検出されて処理された後にデータベースが既知の状態になることを保証できますか?

例外を無視しようとする試みが間違っています。現在のコード(図示)は、例外がキャッチされた後、準備されたステートメントを繰り返すことを可能にします。 'MySQLIntegrityConstraintViolationException'は、あなたが求めたことをデータベースが実行できなかったことを伝えます。重複したキーか、必要な外部キーを含む削除である可能性があります。

この例外に対応する方法を実際に知るには、データベーステーブルの制約を理解する必要があります。

重複を挿入する場合、DBエンジンにdupsを無視するか、dupsをパイプする必要があることを示す必要がある状況がありました。

ここでの最良の答えは、準備された声明が例外を投げている理由を理解し、その状況に対応する方法を計画することです。あなたがすでにこれを知っているなら、質問にそれを加えてください。さもなければ、われわれはわらをつかんでいます。

関連する問題