0

最近、非常に大きな問題が発生し、デバッグに多くの時間がかかりました。テーブルの 32 列を更新する更新ステートメントがあります。私は PreparedStatement でそれを行いました。誤って setParameter() 呼び出しを 1 つ削除したため、更新を正常に完了できませんでした。

JDBC (Apache Derby) から「少なくとも 1 つのパラメーターが初期化されていません」という例外が発生し、ドライバーが名前または少なくとも最初のパラメーターの序数について何も通知しないため、どのパラメーターが設定されていないかを特定できませんでした。設定されていません...

私は、(ほぼ完成した) 準備済みステートメントから単純な古い SQL を生成するいくつかのユーティリティをグーグルで検索することに失敗しました。何が設定されていないかを見ることができるので、このような状況では大いに役立ちます。

誰もこの問題に直面しましたか? 解決策はありますか?

4

2 に答える 2

2

P6Spyを見てください。データベースに転送する前に、すべての JDBC 呼び出しをインターセプトしてログに記録できます。

または、Springs JDBCTemplate の使用を検討してください。これは、ボイラープレート JDBC コーディングの多くを取り除き、この種の間違いを回避するのに役立ちます。このビットを使用するために、Spring フレームワークの残りの部分は必要ありません。

于 2009-03-23T09:14:15.487 に答える
0

準備されたステートメントのパラメーターは、PreparedStatement オブジェクトの単なるリストまたはマップであるため、値を検査できるはずです。

また、ステートメントを実際に実行する前に、ラップされた PreparedStatements を作成し、すべてのパラメーターとその設定をログに記録する jdbc ドライバーの周りに非常に単純なラッパーを作成することもできます。

于 2009-03-23T09:29:00.507 に答える