一尘不染

N前缀和参数

sql

我有一些存储过程

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

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

但是,如果exec MyProc '袪褍褋褋泻懈泄 褌械泻褋褌'使用俄语字母来称呼它,则无法正常工作。

通话exec MyProc N'袪褍褋褋泻懈泄 褌械泻褋褌'再次正常。

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


阅读 184

收藏
2021-05-30

共1个答案

一尘不染

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

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

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

2021-05-30