ムシャクシャしてやった。誰でもよかった。

今は反省している。ライブや旅行日記、ツクールなど。

DbUtilsのバグ

2005-09-03 02:47:01 | IT
たまにはweblogとして、役に立つものを残しますか。


JavaでDBアクセス用のライブラリとして有名なDbUtilsですが、
Oracleにnullの値を登録することができないという致命的なバグがあります。

最新のベータ版では修正されているという噂ですが、いかんせんベータ版、
きちんとしたところでは使用できないでしょう。

そこで、このバグのみを改修したサブクラスを作ってみました。
もちろんコピーレフトですので、使ってやってください。


package jp.ne.cool.chiba.pi01.dbutils;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;

import javax.sql.DataSource;

import org.apache.commons.dbutils.QueryRunner;

/**
 * NULLを設定できないバグを改修したQueryRunner
 *
 * @author pi
 * @version 1.0
 */
public class NullFixQueryRunner extends QueryRunner {

  /**
   * コンストラクタ
   */
  public NullFixQueryRunner() {
    super();
  }

  /**
   * コンストラクタ
   *
   * @param ds DataSource
   */
  public NullFixQueryRunner(DataSource ds) {
    super(ds);
  }

  /**
   * @see org.apache.commons.dbutils.QueryRunner#fillStatement(java.sql.PreparedStatement,
   * java.lang.Object[])
   */
  protected void fillStatement(PreparedStatement stmt, Object[] params) throws SQLException {

    if (params == null) {
      return;
    }

    for (int i = 0; i < params.length; i++) {
      if (params[i] != null) {
        stmt.setObject(i + 1, params[i]);
      } else {
        stmt.setNull(i + 1, Types.VARCHAR);
      }
    }
  }

}

最新の画像もっと見る

コメントを投稿