一尘不染

N前缀和参数

sql

我有一些存储过程

CREATE PROC MyProc ( @FullName NVARCHAR(200) = NULL )
    AS --.............

当我调用此proc时,exec MyProc 'Some english text'它的效果很好。

但是,如果exec MyProc 'Русский текст'使用俄语字母来称呼它,则无法正常工作。

通话exec MyProc N'Русский текст'再次正常。

我有一个客户端应用程序,…我需要在参数中添加N前缀吗?如果是,该怎么办?


阅读 221

收藏
2021-03-08

共1个答案

一尘不染

仅在将.net代码中的字符串串联时才需要N(手动)。如果将SQLParameter声明为nvarchar,这是自动的:框架会为您处理它。

因此,您的客户端代码 不正确 ,使您可以进行 SQL注入

无论如何,N表示字符串文字是unicode。

2021-03-08