@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

中国語文字列のインサート

1
投稿者投稿内容
kt76zz
会議室デビュー日: 2004/01/09
投稿数: 2
投稿日時: 2004-01-13 18:01
はじめまして、kt76zzと申します。

パラメータオブジェクトを使用してDB(Oracle)にデータをインサートしようとしています。
テキストボックスに入力された中国語の文字列をインサートしようとすると

署名の不一致またはデータ オーバーフロー以外の理由により、
コマンド引数 [0] 'TEST1' データ値を変換できませんでした。

というエラーが発生し、インサートできません。
日本語のデータはエラーもなくインサートできます。

中国語の文字列はYahooの中国のサイト(http://cn.yahoo.com/)から
コピー&ペーストして、テキストボックスに入力しています。
また、中国語のフォントをインストールし、テキストボックスのFONTプロパティを
中国語(MS Song)に設定して中国語を表示できるようにしています。

同じプログラムで日本語の文字列はエラーもなくインサートすることができます。
中国語をインサートする際に必要な手段などあるのでしょうか。
御存知の方がおられましたらご教授くださるようお願いします。

以下インサート部分のコードです。
Try
Dim MyDataAdapter As New OleDbDataAdapter(strSELECT, MyConnection)

MyDataAdapter.Fill(MyDataSet, "MyTable")

Dim MyCommand As New OleDbCommand(strSQL, MyConnection)
Dim MyParameterCollection As OleDbParameterCollection = MyCommand.Parameters
Dim MyParameter As OleDbParameter

MyParameter = MyParameterCollection.Add("TEST1", OleDbType.VarChar, 0, "TEST1")

MyDataAdapter.InsertCommand = MyCommand

Dim MyDataRow As DataRow

MyDataRow = MyDataSet.Tables("MyTable").NewRow

MyDataRow.Item("TEST1") = Trim(frmMain.txtTEST1.Text)

MyDataSet.Tables("MyTable").Rows.Add(MyDataRow)

MyDataAdapter.Update(MyDataSet, "MyTable")
MessageBox.Show("INSERT OK")

Catch ex As Exception
MessageBox.Show("INSERT ERROR" & Chr(13) & ex.Message)

End Try
PoH
常連さん
会議室デビュー日: 2003/09/09
投稿数: 48
投稿日時: 2004-01-13 18:16
外国語フォントを使用して
プログラム等作成したことが無いので
まったくお力になれませんが

そもそもその中国語の混じった
SQL文自体はDBになげて通っていますか?
それ自体が通っていなければ駄目ですし
それが通っていれば何か他に必要なのでしょうね

回答で無く、興味本位の質問返しになってますが
お許しください
kt76zz
会議室デビュー日: 2004/01/09
投稿数: 2
投稿日時: 2004-01-13 19:15
PoHさん 書込ありがとうございます。

>そもそもその中国語の混じった
>SQL文自体はDBになげて通っていますか?

 はい、中国語データを含むSQL文は
 実行可能です(DBを多国語対応にしています)。

PoH
常連さん
会議室デビュー日: 2003/09/09
投稿数: 48
投稿日時: 2004-01-14 10:09
>はい、中国語データを含むSQL文は
>実行可能です(DBを多国語対応にしています)。

そうですか・・・
私もUNIXでですがNLS_LANGを変更して
データベースの文字コードも変えて、と試して見ましたが
普通にSelect文に簡体字中国語(GB2312)みたいなのが
入ってきてもDBの方はいけるようですね。

表示も出来てるしSQL文は通る
そうなってくるとデータセットに
なにか多国語関連の設定があるのでしょうかね?

お力になれず申し訳ないです
くぅー
会議室デビュー日: 2003/08/06
投稿数: 12
投稿日時: 2004-10-22 14:32
>そもそもその中国語の混じった
>SQL文自体はDBになげて通っていますか?
 はい、中国語データを含むSQL文は
 実行可能です(DBを多国語対応にしています)。

同じような質問でしみませんが
InsertのSQL文も通っているということでしょうか?

以前、英語環境でどうしても日本語のコメントをDBに残しておきたい時
SQL文で日本語の項目に対して
JapaneseComment = N'" & JapaneseComment.text & "',"
でうまくいきましたが・・・。
ぜんぜん的をはずしていたらすみません。

NYRL
ベテラン
会議室デビュー日: 2003/07/14
投稿数: 90
投稿日時: 2004-10-22 15:37
なんとなくですが


MyParameter = MyParameterCollection.Add("TEST1", OleDbType.VarChar, 0, "TEST1")

MyParameter = MyParameterCollection.Add("TEST1", OleDbType.VarWChar, 0, "TEST1")

OleDbType.VarWChar でいかないでしょうか?


[ メッセージ編集済み 編集者: NYRL 編集日時 2004-10-22 15:38 ]
1

スキルアップ/キャリアアップ(JOB@IT)