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

外字データのINSERT

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/08/26
投稿数: 34
投稿日時: 2004-12-20 18:57
こんにちは。
SQLの質問になってしまうかもしれませんが、お許し下さい。
外字データの入ったテーブル「A_TBL」があり、SQLServerで開くと「・山太郎」のように
表示されます。
そのデータをDataReaderで読み込んで、
読み込んだデータよりINSERT文を作って、
SqlCommand.ExequtenonQueryで別のテーブル「B_TBL」にINSERTすると
「?山太郎」のように書き込まれてしまいます。
INSERT文は
"INSERT INTO B_TBL(NAME) VALUES('" + Convert.ToString(dr["NAME"]) + "')"
というような感じです。(※drはDataReaderクラス)

INSERT INTO B_TBL(NAME) SELECT NAME FROM A_TBL
のようにした場合は正しく「・山太郎」と入りますが、
前者のように、一旦DataReaderで受け取ってから処理したいと思っています。
何か良い方法はないでしょうか?
ご教授よろしくお願いします。


甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2004-12-21 07:30
引用:

未記入さんの書き込み (2004-12-20 18:57) より:
こんにちは。
SQLの質問になってしまうかもしれませんが、お許し下さい。
外字データの入ったテーブル「A_TBL」があり、SQLServerで開くと「・山太郎」のように
表示されます。
そのデータをDataReaderで読み込んで、
読み込んだデータよりINSERT文を作って、
SqlCommand.ExequtenonQueryで別のテーブル「B_TBL」にINSERTすると
「?山太郎」のように書き込まれてしまいます。
INSERT文は
"INSERT INTO B_TBL(NAME) VALUES('" + Convert.ToString(dr["NAME"]) + "')"
というような感じです。(※drはDataReaderクラス)

INSERT INTO B_TBL(NAME) SELECT NAME FROM A_TBL
のようにした場合は正しく「・山太郎」と入りますが、
前者のように、一旦DataReaderで受け取ってから処理したいと思っています。
何か良い方法はないでしょうか?
ご教授よろしくお願いします。


・とか?と表示されるのはフォントに無い文字がや無効な文字をブラウザがどのように表現するかと言う話ですよね。おそらくDataReaderで読み込んだ時点(もしくは文字列変数として扱った時点)で、Unicodeで表現できない(又はフォントが無い)文字が?に置き換えられているのでしょう。
データベースで利用する文字コードは何になっているのでしょうか?その文字コードから、Unicodeへの外字の変換が旨く行えていない事がそもそもの原因です。実行環境にその外字が登録されていれば、問題なく変換できそうな気がするのですが、登録してあっても駄目ですか?

[ メッセージ編集済み 編集者: 甕星 編集日時 2004-12-21 07:35 ]
未記入
常連さん
会議室デビュー日: 2004/08/26
投稿数: 34
投稿日時: 2004-12-21 09:42
甕星様
おはようございます。
返信ありがとうございます。

当初の問題については解決出来ました。
INSERT文のVALUES('値')のところをVALUES(N'値')にしたら、
「?」ではなく、「・」でデータを追加できました。
ありがとうございました。

>データベースで利用する文字コードは何になっているのでしょうか?その文字コードか>ら、Unicodeへの外字の変換が旨く行えていない事がそもそもの原因です。実行環境に
>その外字が登録されていれば、問題なく変換できそうな気がするのですが、登録してあ
>っても駄目ですか?

すごく初歩的な質問をしてすみません。
データベースで利用する文字コードの設定はどこで行うのでしょうか?EnterpriseManagerのツール/フォントでインストールした外字を選択しても
テーブルを開いて見たとき「・」で表示されます。
もしよろしければ教えてください。
よろしくお願いします。




1

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