如何从C#代码

时间:2018-11-23 08:11:25

标签: c# sql-server stored-procedures

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中采用哪种解决方案?

任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:2)

我会将SQL中的数据类型保留为NVARCHAR,因为这应该是这样,C#代码应该这样:

myCommand.Parameters.Add("@Parameter", SqlDbType.NVarChar).Value

您传递的是VarChar而不是NVarChar,因此不显示Unicode是很有意义的。