DBアクセスを繰り返すとエラーとなる
This document (00006163) is provided subject to the disclaimer at the end of this document.
問題点
テーブルをUPDATEする処理を繰り返すと、「ページがみつかりません。」とエラーがブラウザに出力されます。
UPDATEはSilverStreamのデータキャッシュを使用せず、以下のようにJDBCの機能を直接使用しています。
原因は何でしょうか?
import java.io.*;
import java.sql.*;
AgiDatabase db = null;
Connection connection = null;
try
{
db = ((AgoHttpRequestEvent)getCurrentRequest()).getDatabase();
connection = db.getConnection( true );
connection.setAutoCommit( false );
PreparedStatement ps = connection.prepareStatement
( "UPDATE ATABLE SET B = 1" );
ps.executeUpdate();
connection.commit();
}
catch( Exception e )
{
e.printStackTrace();
}
finally
{
if( db != null && connection != null ) {
db.releaseConnection( connection );
}
}
解決方法
PreparedStatementをクローズしていないため、SQL文がデータベース上に滞留し処理が進まなくなることによってエラーとなります。
PreparedStatementはSQL実行後、必ずクローズしてください。
例えば上記の場合、ps.executeUpdate() の後に ps.close() を実行するようにしてください。
PreparedStatement ps = connection.prepareStatement ( "UPDATE ATABLE SET B = 1" ); ps.executeUpdate(); ps.close(); connection.commit();
Disclaimer
この情報は、米国Novell, Inc.およびノベル株式会社の内外から発生したものです。本文書の内容または本文書を使用した結果について、いかなる保証、表明または約束も行っていません。また、本文書の商品性、および特定目的への適合性について、いかなる黙示の保証も否認し、排除します。
本文書に記載されている会社名、製品名はそれぞれ各社の商品、商標または登録商標です。
- ドキュメントID: J00006163
- 作成年月日: 17-NOV-2004
- 修正年月日:
- ドキュメントリビジョン: 1
- 分類: exteNd
- 対象NOVELL製品およびバージョン: exteNd Application Server 3.x
- カテゴリ: