[Seasar-user:7595] Re: readXlsWriteDb でスペースを設定するには
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 5月 11日 (金) 17:30:39 JST
小林 (koichik) です.
Date: Fri, 11 May 2007 16:21:58 +0900
From: "o.h." <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:7593] Re: readXlsWriteDb でスペースを設定するには
> タブとか改行をいれれたら便利かなと思いまして.
必要性があるなら検討しますが,便利かもしれない
くらいだったら先送りにさせていただければと思います.
Date: Fri, 11 May 2007 16:34:10 +0900
From: "o.h." <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:7594] Re: readXlsWriteDb でスペースを設定するには
> > その後,正規化されたデータを適切な型に変換する
> > 場所があります.その段階でも,文字列データは
> > trim され,空文字列は null になります.
> > この部分は DB から読み込んできたデータにも
> > 適用されますし,
>
> ここなんですが、現時点でためしてみた限りでは DB 側で
> SPACE のものでもそのまま SPACE となって読み取れています.
> これって何かがおかしいということでしょうか.
> #そんなはずはないってことでしたら、それはそれでいいんですが
ちょっとよく分かりません.
具体的に言うと,DataRowImpl#setValue(String, Object) から
DataColumnImpl#convert(Object) が呼ばれ,その中で
カラムが CHAR や VARCHAR だと StringType クラスの
convert(Object, String) が呼び出されます.
そこで trim して空文字列なら null にして返しています.
DataRowImpl や DataColumnImpl は SqlReader と
XlsReader の両方かで使われます.
SqlReader の場合は DataTableResultSetHandler#addRow(),
XlsReader の場合は XlsReader.setupRow() から
呼び出されます.
XlsReader をインスタンス化する際に trimString が
false だと,StringType も trim しないインスタンスを
使うようにしています.
SqlReader 側は常に trim する StringType を使用します.
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内