我有一些存储过程
CREATE PROC MyProc ( @FullName NVARCHAR(200) = NULL ) AS --.............
当我调用此proc时,exec MyProc 'Some english text'它的效果很好。
exec MyProc 'Some english text'
但是,如果exec MyProc 'Русский текст'使用俄语字母来称呼它,则无法正常工作。
exec MyProc 'Русский текст'
通话exec MyProc N'Русский текст'再次正常。
exec MyProc N'Русский текст'
我有一个客户端应用程序,…我需要在参数中添加N前缀吗?如果是,该怎么办?
仅在将.net代码中的字符串串联时才需要N(手动)。如果将SQLParameter声明为nvarchar,这是自动的:框架会为您处理它。
因此,您的客户端代码 不正确 ,使您可以进行 SQL注入
无论如何,N表示字符串文字是unicode。