0

私のクエリは次のようになります。

string str = string.Format("Insert into [MyDB].[dbo].[tlb1] ([file_path],[CONTENT1],[CONTENT2]) values ('{0}','{1}','{2}');", fullpath, _val[0], _val[1]);

データベースにデータを挿入するarray _val[]と、英語のデータが含まれている場合は正しく挿入されますが、データベースにロシア語のデータが配列に含まれている場合??????????????????????? 、配列からロシア語のデータを挿入する方法はありますか.

4

4 に答える 4

2

この (アーカイブされた) Microsoft サポートの問題によると:

SQL Server で Unicode 文字列定数を扱うときは、すべての Unicode 文字列の前にプレフィックス N を付ける必要があります

于 2012-05-15T11:11:03.377 に答える
1

まず、プリペアド ステートメントを使用して、データベース ドライバーにプレースホルダーを正しく (つまりSqlCommand、パラメーターを使用して) 挿入させる必要があります。その後、問題は解決するはずです (潜在的な SQL インジェクションの問題も同様です)。

あなたの場合の簡単な修正として:挿入する文字列リテラルの前に次を付けますN

... values (N'{0}',N'{1}',N'{2}')

これにより、リテラルが任意のレガシー コードページではなく Unicode リテラルになり、Unicode からレガシー コードページへの変換が妨げられます (表現できない文字に疑問符が付きます)。

于 2012-05-15T11:11:45.960 に答える
0

[Content1]とのデータ型は のよう[Content2]ですncharnvarcharUnicode データの格納に使用される列を変換する必要があります。

于 2012-05-15T10:57:02.473 に答える