[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 メーリングリストの案内