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