C#代码:
using (SqlCommand myCommand = new SqlCommand("My_StoredProcedure", myConnection))
{
myCommand.Parameters.AddWithValue("@Parameter","Quản trị");
}
存储过程:
ALTER PROCEDURE [dbo].[My_StoredProcedure]
(@Parameter NVARCHAR(MAX))
我尝试过的事情:
更改了AddWithValue
以便将SqlDbType.VarChar
设置如下
myCommand.Parameters.AddWithValue("@Parameter", SqlDbType.VarChar).Value = "Quản trị";
然后将存储过程参数类型更改为varchar
,如下所示
ALTER PROCEDURE [dbo].[My_StoredProcedure]
(@Parameter VARCHAR(MAX))
问题:
我尝试的操作无法显示正确的文本值。文本在存储过程侧始终显示为Qu?n tr?
。
如果我在下面尝试这样做,但这不是我想要的。我想从代码(C#)端添加“ N”前缀。所以我不确定如何实现这一目标。
ALTER PROCEDURE [dbo].[My_StoredProcedure]
(@Parameter NVARCHAR(MAX) = N'Quản trị')
我应该在C#或SQL Server中采用哪种解决方案?
任何帮助将不胜感激。
谢谢
答案 0 :(得分:2)
我会将SQL中的数据类型保留为NVARCHAR
,因为这应该是这样,C#代码应该这样:
myCommand.Parameters.Add("@Parameter", SqlDbType.NVarChar).Value
您传递的是VarChar
而不是NVarChar
,因此不显示Unicode是很有意义的。