带有 where 子句反斜杠的 SqlCommand
SqlCommand with where clause backslashes
数据库中有 DESKTOP-123\markj
的匹配记录。当我在 SQL Server Management Studio 中执行代码时,它 returns 一条记录。
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# 代码 returns 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 关于字符串插值。
数据库中有 DESKTOP-123\markj
的匹配记录。当我在 SQL Server Management Studio 中执行代码时,它 returns 一条记录。
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# 代码 returns 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 关于字符串插值。