C# 临时查询中的转义单引号
我有以下疑问:C# 临时查询中的转义单引号,c#,mysql,C#,Mysql,我有以下疑问: MySqlCommand command = new MySqlCommand( @"SELECT `Customer ID`, `First Name`, `Last Name`, `Role` FROM `Contacts` WHERE `Customer ID` = '" + customerID + "'", connection); 如果客户ID中有一个撇号,(即,Adam's Meat),我会得到错误: 您的SQL语法有错误;检查与MySQL服务器版本对应的手
MySqlCommand command = new MySqlCommand(
@"SELECT `Customer ID`, `First Name`, `Last Name`, `Role`
FROM `Contacts` WHERE `Customer ID` = '" + customerID + "'", connection);
如果客户ID中有一个撇号,(即,Adam's Meat
),我会得到错误:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获取第1行中使用near's Meat'的正确语法
使此查询工作的最佳方法是什么?您应该改用参数,这样还可以防止SQL注入:
MySqlCommand command = new MySqlCommand(@"SELECT `Customer ID`, `First Name`, `Last Name`, `Role` FROM `Contacts` WHERE `Customer ID` = ?CostumerID", connection);
command.Parameters.Add("?CustomerID", customerID);
我没有足够的权限创建存储过程不要在字段或表名中使用空格,那么你就不需要那些愚蠢的引号了:P