[Seasar-user:797] Re: S2JDBC でOracleのUnicode問題とうまく付き合いたい ...

B rmail.plala.or.jp suga suga_k
2004年 6月 8日 (火) 09:53:34 JST


スガです。

On Mon, 07 Jun 2004 19:29:10 +0900
Hikaru Taniguchi <[E-MAIL ADDRESS DELETED]> wrote:

> 同じ問題で悩んでいた、とか、オレはこうした、とか、そもそもオマエそこ間違っ
> てますよ、とか…なにかいいアドバイス、頂けないでしょうか > 先輩方

一例ですけど。

変換コードを入れるところは、
    org.seasar.extension.jdbc.types.StringType
の位置が良いと思います。

これを置き換えるには、まず
    org.seasar.extension.jdbc.ValueType
を implements するクラスを作ります。

---------------------------
package example;

import org.seasar.extension.jdbc.ValueType;
import org.seasar.framework.util.StringConversionUtil;

public class CustomStringType implements ValueType {
    public Object getValue(ResultSet resultSet, int index)
            throws SQLException {
        String result = resultSet.getString(index);
        if (result != null) {
            char[] tmp = result.toCharArray();
            for (int i = 0; i < tmp.length; i++) {
                if (tmp[i] = Oracle側文字) {
                    tmp[i] = Java側文字;
                }
            }
            result = new String(tmp);
        }
        return result;
    }

    public void bindValue(PreparedStatement ps, int index, Object value)
            throws SQLException {
        String stringValue = StringConversionUtil.toString(value);
        if (stringValue != null) {
            char[] tmp = stringValue.toCharArray();
            for (int i = 0; i < tmp.length; i++) {
                if (tmp[i] = Java側文字) {
                    tmp[i] = Oracle側文字;
                }
            }
            stringValue = new String(tmp);
        }
        ps.setString(index, stringValue);
    }
}
----------------------------

どこかで (ClassLoader につき) 一回だけ、これを登録してやります。

----------------------------
import org.seasar.extension.jdbc.types.ValueTypes;
..
ValueTypes.registerValueType(String.class, new CustomStringType());
----------------------------

この方法で如何でしょう。


# いい加減ドライバで対応しろよ、という感じですが (^^;
# なんで MS932 でも Shift_JIS でもない妙なマッピングなんでしょう。

--------------------------------------------------------------
 e-mail: [E-MAIL ADDRESS DELETED]
                                              スガ
--------------------------------------------------------------



Seasar-user メーリングリストの案内