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

李 い [E-MAIL ADDRESS DELETED]
2013年 2月 15日 (金) 09:54:06 JST


いつもお世話になります、李と申します。

 Visual Studio 2010
 VB.Net
 .NetFramwork 4.0
 S2Container.NET 1.4.0 RC3
 ODP.Net 2.112.1.0
で開発しています。

DB環境は下記となります:
 DBサーバはWindows Server2008、Oracle11g(11.1.0.7.0)です。
 NLS_CHARACTERSET:       JA16SJISTILDE
 NLS_NCHAR_CHARACTERSET: AL16UTF16

テスト用のテーブル定義:
CREATE TABLE Biko 
( 
        key   NCHAR(10)     NOT NULL,
        biko  NVARCHAR2(50),
        CONSTRAINT Biko_PK PRIMARY KEY (key) USING INDEX
)
※備考にUnicodeも入力するため、NVRCHAR2を採用します。


 現象:
DBの既存レコードから読み込みの場合、Unicode文字が正しく読み込まれ、画面に表示できます。
しかし、画面で入力されたUnicode文字をDBに更新する時、「?」に化けてしまいました。


 調査:(S2Dao.Netを利用せず、ODP.Netでサンプルを作って調査する)
【ソースの抜粋】
①「?」に化けるパターン:
        Dim cmd As New OracleCommand("UPDATE BIKO SET BIKO=:biko WHERE KEY='07'", conn)
        cmd.BindByName = True
        cmd.Parameters.Add("biko", "㎥")
        cmd.ExecuteNonQuery()
②正常に更新するパターン:
        Dim cmd As New OracleCommand("UPDATE BIKO SET BIKO=:biko WHERE KEY='07'", conn)
        cmd.BindByName = True
        Dim pBiko As New OracleParameter("biko", OracleDbType.NVarchar2)
        pEmpno.Value = "㎥"
        cmd.Parameters.Add(pBiko)
        cmd.ExecuteNonQuery()

 調査結果:パラメータバンティングの時、カラムのタイプを指定しなければ、文字化けが発生します。


 質問:
S2Dao.Netで、パラメータバンティングの時、カラムのタイプを指定できる方法がありませんか?


よろしくお願いします。


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