SQL ServerにUnicode文字を書き込む

解決


でりふぁいん  2013-11-19 10:37:25  No: 45602  IP: [192.*.*.*]

使用環境
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  IP: [192.*.*.*]

>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  IP: [192.*.*.*]

igy様

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

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

編集    削除