如何从 C# 代码向存储过程参数添加“N”前缀

Son*_*ner 3 c# sql-server stored-procedures

C#代码:

\n\n
using (SqlCommand myCommand = new SqlCommand("My_StoredProcedure", myConnection))\n{\n    myCommand.Parameters.AddWithValue("@Parameter","Qu\xe1\xba\xa3n tr\xe1\xbb\x8b");\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

存储过程:

\n\n
ALTER PROCEDURE [dbo].[My_StoredProcedure] \n    (@Parameter NVARCHAR(MAX))\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试过的事情:

\n\n\n\n

问题:

\n\n

我尝试的方法无法显示正确的文本值。文本始终显示Qu?n tr?在存储过程一侧。

\n\n

如果我在下面尝试,这可行,但这不是我想要的。我想从代码(C#)端添加“N”前缀。所以我不确定如何实现这一目标。

\n\n
ALTER PROCEDURE [dbo].[My_StoredProcedure]\n    (@Parameter NVARCHAR(MAX) = N\'Qu\xe1\xba\xa3n tr\xe1\xbb\x8b\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

我应该在 C# 或 SQL Server 中应用什么样的解决方案?

\n\n

任何帮助将不胜感激。

\n\n

谢谢

\n

Nik*_*kos 5

我会将 SQL 中的数据类型保留为 an,NVARCHAR因为它应该是这样,并且 C# 代码应该如下所示:

myCommand.Parameters.Add("@Parameter", SqlDbType.NVarChar).Value
Run Code Online (Sandbox Code Playgroud)

您已传入VarChar而不是NVarChar因此 Unicode 不显示是有意义的。