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中应用哪种解决方案?
任何帮助都将不胜感激。
谢谢
我会将SQL中的数据类型保留为NVARCHAR
,因为这就是它应该是的,C#代码应该是这样的:
myCommand.Parameters.Add("@Parameter", SqlDbType.NVarChar).Value
您已经传入了VarChar
而不是NVarChar
,因此Unicode不显示是有意义的。