[seasar-dotnet:2241] Re:【S2Dao.Net】OracleのNCHARまたはNVRCHAR2の取扱について

李 い [E-MAIL ADDRESS DELETED]
2013年 2月 20日 (水) 09:20:52 JST


小谷さんへ

李です。

>(多分できない要件なのだろうな、ということは承知の上で一応確認させていただ
きたいのですが、
>NLS_CHARACTERSETにもUnicodeとなるキャラクタセットを設定して運用することは
できないでしょうか?
>(非Unicodeによる入力がある場合は適所で変換をかける・・・など))

NLS_CHARACTERSETの設定は初期時のみ、既存のDBを利用する場合無理ですね。また、
Unicodeの文字は
記号ですが、お客様の要望でUnicode文字を利用することなので変換も難しいだと思
います。

一番理想の形は、カラムごとマッピング対象の属性を持つ、個別設定できれば嬉しい
が、
影響範囲は大きく対応は難しいと思います。


以上です。


-----Original Message-----
From: seasar-dotnet-bounces @ ml.seasar.org
[mailto:seasar-dotnet-bounces @ ml.seasar.org] On Behalf Of kotani.k
Sent: Tuesday, February 19, 2013 11:09 PM
To: seasar-dotnet @ ml.seasar.org
Subject: [seasar-dotnet:2239] Re: 【S2Dao.Net】OracleのNCHARまたはNVRCHAR2の
取扱について

李さん、koalaさん

小谷です。

ご回答&コメントありがとうございます。
不勉強でお恥ずかしい限りです。

koalaさんの
>System.Data.DbType.stringはOracleDbType.Varchar2にマッピング
李さんの
>NLS_CHARACTERSETはUnicode(たとえばAL32UTF8)でしたら、正常に更新できま
す。
を合わせて考えると
System.Data.DbType.string⇒OracleDbType.Varchar2にマッピング⇒Varcharなので
NLS_CHARACTERSETに設定された文字コードを使用、という
動きになるのかな・・・と勝手に推測しています。

李さんが書いて下さったコードを元に(そのまま使わせていただくかもしれません
が)、
どうするべきか考えてみます。少々お時間を下さい。

(多分できない要件なのだろうな、ということは承知の上で一応確認させていただき
たいのですが、
NLS_CHARACTERSETにもUnicodeとなるキャラクタセットを設定して運用することはで
きないでしょうか?
(非Unicodeによる入力がある場合は適所で変換をかける・・・など))

以上です。

2013年2月19日 10:33 李 い <liyi @ kssinet.co.jp>:
> 李です。
>
> また書き間違いました。
>
> >(System.Data.DbType.stringはOracleDbType.Varchar2にマッピングされたら何
も
> 問題がないのに...)
>> (System.Data.DbType.stringはOracleDbType.NVarchar2にマッピングされたら何
も
> 問題がないのに...)
> です。
>
> 失礼しました。
>
>
> -----Original Message-----
> From: seasar-dotnet-bounces @ ml.seasar.org
> [mailto:seasar-dotnet-bounces @ ml.seasar.org] On Behalf Of 李 い
> Sent: Tuesday, February 19, 2013 10:13 AM
> To: seasar-dotnet @ ml.seasar.org
> Subject: [seasar-dotnet:2237] Re: 【S2Dao.Net】OracleのNCHARまたはNVRCHAR2
の
> 取扱について
>
> 小谷さんへ
>
> 李です。
>
>>
http://docs.oracle.com/cd/E16338_01/win.112/b66456/featOraCommand.htm#i10072
> 22
> こちらも読んだことがあります。
>
> >DBの既存レコードから読み込みの場合、Unicode文字が正しく読み込まれ、画面
に
> 表示できます。
> >しかし、画面で入力されたUnicode文字をDBに更新する時、「?」に化けてしま
い
> ました。
> 面白いのは、この現象がDBサーバはのNLS_CHARACTERSETはJA16SJISTILDE(非
Unicode)
> の場合は発生します。
> NLS_CHARACTERSETはUnicode(たとえばAL32UTF8)でしたら、正常に更新できま
す。
> (同じOracleDbType.Varchar2にマッピングするのに動きの違いは理解できない
=_=)
>
>
> ところが、CHAR,VARCHAR2のカラムに対して、OracleDbType.NVarchar2を設定して
も
> 正しく動くみたいです。
> (System.Data.DbType.stringはOracleDbType.Varchar2にマッピングされたら何も
問
> 題がないのに...)
>
>
> 以上です。
>
>
> -----Original Message-----
> From: seasar-dotnet-bounces @ ml.seasar.org
> [mailto:seasar-dotnet-bounces @ ml.seasar.org] On Behalf Of koala
> Sent: Tuesday, February 19, 2013 9:43 AM
> To: seasar-dotnet @ ml.seasar.org
> Subject: [seasar-dotnet:2236] Re: 【S2Dao.Net】OracleのNCHARまたはNVRCHAR2
の
> 取扱について
>
>
> 李さん
> 小谷さん
>
> #李さんと入れ違いになりましたがせっかく書いたのでこのまま投稿します。
>
>> S2Dao.NETのupdate処理に渡すEntity内のプロパティのうち、
>> 文字化けが起きているプロパティの型はどのようになっているでしょうか?
>> (stringであればUnicode用のSystem.DbType.Stringが使用されるはずなのです
> が。。。)
>
> OracleCommandオブジェクト
>
http://docs.oracle.com/cd/E16338_01/win.112/b66456/featOraCommand.htm#i10072
> 22
>
> DbTypeからのOracleDbTypeの判断
> OracleParameterクラスでは、DbTypeの値を指定すると、表3-7に示されているとお
り
> OracleDbTypeの値が判断されます。
> 表3-7 DbTypeからのOracleDbTypeの判断
>
> によると、System.Data.DbType.stringはOracleDbType.Varchar2にマッピングされ
て
> います。
> OracleDbType.NVarchar2にマッピングされるSystem.Data.DbTypeは存在しないの
で、
> エンティティのプロパティの型では対応できないということはないでしょうか?
>
>
> 以上です。
>
>
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
_______________________________________________
seasar-dotnet mailing list
seasar-dotnet @ ml.seasar.org
https://ml.seasar.org/mailman/listinfo/seasar-dotnet



seasar-dotnet メーリングリストの案内