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