@iku-kobayashi

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【.NET】クライアントアプリVB.NET(4.8)で文字体系UNICODEをORACLEサーバDBに更新

初めて投稿させていただきます。

環境
(サーバ)
・Windows2019Server
・DB(ORACLE19C)
データベースキャラクターセット:JA16SJISTILDE
各国語キャラクターセット :AL16UTF16

(クライアント)
・Windows10
・開発言語 Microsoft Visual Studio Professional 2019(VBで開発)
・クライアントDB(ORACLE19C)
Oracle.DataAccess.dll(Ver4.122.19.1)を定義
NLS_LANG=Japanese_Japan.JA16SJISTILDE で設定済み

VB.NETアプリで
Str="UPDATE TABLEA "
"SET 氏名 = n'ニレ榆' " <---NVARCHAR2(100)で定義
"WHERE 番号 = 1234 "

Execute(Str,return) ODP.Execute
を実行すると
DBの氏名は'ニレ?'になってしまいます。

なをORACLEツールSQL*Loderでは正常に更新されます。

原因と対処方法をご教授ください。
よろしくお願いいたします。

1 likes

3Answer

JA16SJISTILDE はcp932(sjis)系です。windows10はcp932に使用してますか?Microsoft Visual Studioもcp932に統一してはどうでしょう。

もしくは、可能な限り(DBを除く)、utf-8に統一してはどうでしょう。

1Like

早々のご解答ありがとうございます。

再度、調べて
Windows10クライアントの環境変数に
ORA_NCHAR_LITERAL_REPLACE=TRUE
を設定することにより、VB.NTアプリ(VB)及びSQL*Loderの両方とも
Windows2019ServerのORACLEDBに正常に更新されました。

3年前にWindows7からWindows10に移行した為、DBの文字もAL32UTF8にするべきでしたが
単純移行ということで、DB文字もsjisで移行しました。

ありがとうございました。
これにてこの質問はクローズさせて頂きます。

1Like

まず接続から実際のコードを書いてどこがおかしいか指摘してもらった方がいいのではないでしょうか?

0Like

Your answer might help someone💌