如何从 c# 代码向存储过程参数添加"N"前缀



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不显示是有意义的。

最新更新