SQL ServerにUnicode文字を書き込む

解決


でりふぁいん  2013-11-19 10:37:25  No: 45602

使用環境
Windows 7
Delphi XE2
SQL Server 2008 Express

SQL Serverに対してUnicode文字を書き込みたいんですが、例えば

Edit;(もしくはAppend;)
FieldByName('ID').AsInteger:=1;
FieldByName('Field1').AsString:='翻译';
Post;

とすると書き込めるのですが、
ADOのQueryのSQL文を使って

SQL.Text:='update Table1 set Field1 = '+QuotedStr('翻译')+
          ' where ID = 1 ';
ExecSQL;
とか
SQL.Text:='insert into Table1 (ID,Field1) values(1,'+QuotedStr('翻译')+
          ' ) ';
ExecSQL;

みたいに書き込もうとすると文字化けしてUnicode文字部分が?マークになってしまいます。
ちなみに対象フィールドはnchar型にしてます。

SQL文を使って書き込むことはできないんでしょうか?
どなたかご教授願います。


igy  2013-11-19 16:21:31  No: 45603

>SQL.Text:='update Table1 set Field1 = '+QuotedStr('翻译')+
>          ' where ID = 1 ';
>ExecSQL;
>とか
>SQL.Text:='insert into Table1 (ID,Field1) values(1,'+QuotedStr('翻译')+
>          ' ) ';
>ExecSQL;

試していませんが、
SQL.Text:='update Table1 set Field1 = N'+QuotedStr('翻译')+' where ID = 1 ';
SQL.Text:='insert into Table1 (ID,Field1) values(1,N'+QuotedStr('翻译')+' ) ';
のようにNをつけるのは、いかがですか?


でりふぁいん  2013-11-20 02:50:10  No: 45604

igy様

ありがとうございました。
教えて頂いた方法でうまくいきました。

今後とも何かありましたらよろしくお願い致します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加