- PR -

Commons DBUtils NULL値の登録について

1
投稿者投稿内容
みーちく
大ベテラン
会議室デビュー日: 2002/08/29
投稿数: 131
投稿日時: 2005-12-28 14:00
みーちくと申します。

SQLServer8のDBへJava側よりCommons DBUtilsを使用して登録を行っております。
datetime型にNULLを登録したいのですが、下記のエラーメッセージが表示され、
登録できません。

DBUtils QueryRunner fillStatement()において、setNull()が使用されており、
NULL値はセットされております。
どうすれば、NULL値を登録できるのでしょうか?
宜しくお願い致します。

[エラーメッセージ]
このドライバは、指定された SQL タイプをサポートしていません。
cloy
会議室デビュー日: 2004/01/19
投稿数: 16
投稿日時: 2005-12-28 18:09
DB2ですが、同様の現象に遭遇しました。原因は、
QueryRunner#fillStatement()メソッドのなかで、
PreparedStatement#setNull(i + 1, Types.OTHER)と、
java.sql.Types.OTHER が指定されているためです。

QueryRunnerのサブクラスを作成して、fillStatement()メソッドをオーバーライドし、
このsetNull()の第2引数をTypes.OTHERではなく、Types.VARCHARなどを指定する
実装を書けばOKです。

恐らくDbUtilsのバージョンは1.0を使用されていると思いますが、
1.1devでは上記のように修正されているようです。

http://cvs.apache.org/viewcvs.cgi/jakarta-commons/dbutils/src/java/org/apache/commons/dbutils/QueryRunner.java?r1=1.13&r2=1.14&diff_format=h
みーちく
大ベテラン
会議室デビュー日: 2002/08/29
投稿数: 131
投稿日時: 2006-01-04 09:14
みーちくです。

cloyさん
返信ありがとうございました。
変更されたソース(QueryRunner.java)をダウンロードして、
再度Jarを作り直して対応しました。

情報ありがとうございました。

1

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