- PR -

PreparedStatementのCloseに関して

1
投稿者投稿内容
pokotan
会議室デビュー日: 2006/04/19
投稿数: 1
投稿日時: 2006-04-19 19:18

testAクラスでPreparedStatementをインスタンスで宣言し、
使用しているメソッドを他のクラスからLOOP処理で何度も呼び出す場合、
下記の処理はCLOSE処理をしてないのでDBに負担をかけることになりますか?
※DB2を使用
class testA{

private static PreparedStatement PS1

private static HashMap AAA(Connection con, String SA)
throws SQLException {

HashMap ret = null;
if (PS1== null) {

sql.append("SELECT A FROM BTABLE WHERE ");
sql.append("C = ? ");
PS1 = con.prepareStatement(sql.toString());
}
PS1.setString(1, SA);
ResultSet rs = PS1.executeQuery();
ResultSetMetaData rm = rs.getMetaData();
int Cnt = rm.getColumnCount();

if (rs.next()) {
ret = new HashMap();
for (int i = 1; i <= Cnt; i++) {
if (rs.getObject(i) != null) {
ret.put(rm.getColumnName(i), rs.getObject(i));
}
}
}
rs.close();
return ret;
}
}


class testB{

private String BBB (Connection con){
while(rs.next()) {
    −−−−−−省略-------------
    
testA.AAA(ssss);

}
}
}
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-04-19 20:13
継続して使用することでDBに負担をかけるのは、StatementよりConnectionでしょう。
それ以前に、PreparedStatementオブジェクトを使いまわす意図がまったくわかりません。
こんなことしていると、バグの温床になりますよ。
1

スキルアップ/キャリアアップ(JOB@IT)