[Seasar-user:2642] Re: 更新SQL自動生成について
J.r0ck
j69
2005年 10月 1日 (土) 17:42:26 JST
J.r0ckです。
> ところで、DBはOracle8iですよね。
>
> であれば、書かれている動作自体がおかしいなぁ。
とかいたものの、調べてみたらそうなっちゃうみたいですね。
済みません(汗)
1.PreparedStatementを使用してパラメータとして指定した場合は
パラメータとして指定したデータは規定のデータ型となる。
2.JDBCではStringをパラメータとして指定した場合はVARCHAR型(または
LONGVARCHAR型)になりCHAR型にはならない。
OracleではCHAR型または文字列リテラルだけの比較では空白のパディングが
おこなわれるが、VARCHAR型が含まれる場合はパディングされないので
異なる文字列となる。
3.S2JDBCでは、PreparedStatementを使用し、CHAR型のカラムはSetStringで
バインドしている。
ということで、
> このようなプログラムがあった場合、dao#updateで自動生成されるSQLは
>
> update HOGE set ID='4', NAME='TEST' where ID='4'
>
> のような感じになります。
> この時WHERE句は ID='4 'ではなくID='4'となっている為、一致するデータは
> 0件となります
が発生しちゃうんですね。
う〜ん、思い切ってDB側でIDの後ろスペース取れないかしら(笑)
これから、犬の散歩なので続きは後ほど...。
※とりあえず先ほどのレスは無かったことに(詫)
以上
--
J.r0ck <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内