3

テーブルに挿入したい次の文字列があります。

 string command = @" insert into " + txnDC.Connection.Database + "..[AZGetPackages] ( [PackageID] , [PackageName] , [VendorID] , [VendorDisplayName] , [IsCustom] , [EPCustomerID] )" +
                    @"values( N'1', N'Package 1', N'11', N'Vendor 1', N'0', N''),
                    ( N'2', N'Package 2', N'12', N'Vendor 2', N'0', N''),
                    ( N'3', N'Package 3', N'13', N'Vendor 3', N'0', N''),
                    ( N'4', N'雑誌コード', N'14', N'税込', N'0', N'')";

その行の直後にブレークポイントを配置し、デバッグで文字列を表示すると、次のように表示されます。

 txnDC.ExecuteCommand(command, new object[0]); << breakpoint here to view command var

と表示 || 中国語の文字用。

パイプは実際には小さな長方形です。

そのため、テーブルに挿入すると、設定した実際の文字ではなく、四角形の文字が挿入されます。

ここで何かアドバイスはありますか?

ありがとう!

4

2 に答える 2

1

他の人のマシンでまったく同じコードを実行しましたが、変更なしで期待どおりに動作します。これは私のシステムの表示上の問題のようです。唯一の異常な出来事は、私が休暇で家を出て、マシンを 10 日間オフにしたことです。それはおそらく無関係であることはわかっていますが、フォントに関連するシステムに何らかの影響を与えたようです。そして、私が留守の間、誰も私のマシンに触れていませんでしたし、私が留守にする前に、フォント関連のことは何もしていませんでした。

ただし、ひねりがあります。メモ帳は中国語の文字を表示せず、VS デバッガーも SQL SSMS グリッドの結果ビューも表示しません。しかし、VS .CS ファイル文字列 var def は、SSMS エディターに貼り付けると、それらも表示されます。

非常識!

于 2013-06-04T21:37:30.467 に答える
0

OK、あなたが何をしているのか正確にはわかりませんが、パラメーター化されたクエリを使用したほうがよいでしょう。したがって、おそらく次のようなものです(これは疑似コードであるため、コンパイルするには変更が必要です):

using (SqlConnection c = new SqlConnection("..."))
{
    c.Open();
    using (SqlCommand cmd = new SqlCommand("INSERT INTO table (...) VALUES (@field1, ...)", c);
    {
        cmd.Parameters.AddWithValue("@field1", "税込");
        cmd.Parameters[0].SqlDbType = SqlDbType.NVarChar;

        cmd.ExecuteNonQuery();
    }
}
于 2013-06-04T19:29:18.127 に答える