6

私はSQLCommandを持っています:

"顧客の更新SetName= @name where code = @code"

そしてこのコード:

cmd.Parameters[0].Value = "بهروز";//(some Unicode characters)  
cmd.Parameters[1].Value = 1;  
cmd.ExecuteNonQuery();  

またはこのコード:

        UpdateCommand.CommandText = "UPDATE [Customers] SET [Name] = @p1 WHERE (([Code] = @p2) AND ((@p3 = 1 AND [Name] IS NULL) OR ([Name] = @p4)))";
        UpdateCommand.Parameters.Add("@p1", System.Data.SqlDbType.SmallInt, 0, "Name");
        UpdateCommand.Parameters.Add("@p2", System.Data.SqlDbType.NVarChar, 0, "Code");
        UpdateCommand.Parameters.Add("@p3", System.Data.SqlDbType.NText, 0, "Name");
        UpdateCommand.Parameters.Add("@p4", System.Data.SqlDbType.SmallInt, 0, "Name");

顧客テーブルを選択すると、たくさんの「?」が表示されます。
SQLDataAdapterを操作するときにSQLCommandが正しく機能するのはなぜですか?
UnicodeデータをANSIに変換するにはどうすればよいですか?

編集:
言い換えれば:
SQLDataAdapterはどのコードを使用しますか?
誰かが.netフレームワークのその部分のソースコードを持っていますか?

4

3 に答える 3

7

親愛なるBehroozは単純なSQLコマンドを使用するだけです

N'ناصرحاجلو'

Nを使用するときはいつでも、強制的にユニコードを使用し、何も修正されません。

于 2010-01-04T15:20:42.507 に答える
2

.NETのすべての文字列はUnicodeです。.NET内にはANSI文字列のようなものはありません。文字列をANSIとしてバイト配列にエンコードする場合は、Encoding.GetBytesを使用します。

問題は、ストアドプロシージャへのデータの送信方法にある可能性があります。sqlデータ型をパラメータに追加する必要があると思います。次のコードを試してください。

cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 30);

詳細については、SqlParameterCollection.Addメソッドを参照してください。

于 2010-01-02T20:34:29.750 に答える
0

推測SqlDbTypeでは、パラメータのを明示的に設定してみてください。

cmd.Parameters[0].Value = "بهروز";//(some Unicode characters)  
cmd.Parameters[0].SqlDbType = SqlDbType.NVarChar;
cmd.Parameters[1].Value = 1;  
cmd.ExecuteNonQuery();  
于 2010-01-02T20:43:09.760 に答える