为什么我不能在搜索查询中使用

时间:2017-09-08 02:22:51

标签: c# mysql sql

aspnet_users表中的用户名是BlackR \ johnBurns

我试图写一个查询来获取这个记录,其中username =但是它正在标记

string username1 = @"BlackR\" + johnBurns;
var s = DbContext.ExecuteStoreQuery<string>("Select UserId FROM aspnet_Users where UserName = " + username1);

这说Additional information: Incorrect syntax near '\'.

失败了

@不取消这个吗?是因为它是一个SQL查询吗?

1 个答案:

答案 0 :(得分:-1)

假设变量johnBurns存储值johnBurns,那么您的代码与此类似:

string username1 = "BlackR\\johnBurns";
var s = DbContext.ExecuteStoreQuery<string>("Select UserId FROM aspnet_Users where UserName = BlackR\johnBurns");

第一行@将允许您指定字符串,而不必转义任何字符(请参阅this post

第二行,编译器将尝试查找转义字符。在此示例中,它将查找\j,它不是有效的转义字符。

您可以在此处找到转义字符列表:MSDN

最后,您可能需要为SQL的字符串参数添加单引号,最好使用parameterized query作为Tetsuya Yamamoto建议。
使用参数化查询,您无需转义特殊字符,系统将帮助您完成此操作。