如何解决带有 where 子句反斜杠的 SqlCommand
数据库中有 DESKTOP-123\\markj
的匹配记录。当我在 SQL Server Management Studio 中执行代码时,它返回一条记录。
DECLARE @User NVARCHAR(260) = 'DESKTOP-123\\markj'
SELECT r.RoleName
FROM dbo.WindowsAuthenticationRole war
JOIN dbo.[Role] r ON r.RoleId = war.RoleId
WHERE war.[User] = @User
但是这个 C# 代码返回 0 条记录
SqlCommand command = new SqlCommand("SELECT r.RoleName FROM dbo.WindowsAuthenticationRole war JOIN dbo.[Role] r ON r.RoleId = war.RoleId WHERE war.[User] = @User",connection);
command.Parameters.Add("@User",SqlDbType.NVarChar).Value = @"DESKTOP-123\\markj";
如何使 C# 中的 SQL 命令起作用?
更新
回复帮助我解决了问题,实际上我用两个斜杠将值保存在数据库中。
解决方法
在不转义反斜杠的情况下使用@..或不转义@
command.Parameters.Add("@User",SqlDbType.NVarChar).Value = @"DESKTOP-123\markj";
//or
command.Parameters.Add("@User",SqlDbType.NVarChar).Value = "DESKTOP-123\\markj";
Documentation 关于字符串插值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。