[英]string contains quotes character (')
我有一个where子句的字符串,但该字符串包含引号字符(')
例:
SELECT * FROM CsCustomer WHERE Name ='SA'MIR LUBIS'
我从SQL Server收到错误。 有什么建议么?
我用它来将结果显示到表格单元格中
c = new TableCell();
c.Text = Db.SingleString("SELECT Unit FROM cscustomer WHERE Name='"+ r.Name +"'");
tr.Cells.Add(c);
您应该使用参数化查询。 您可以在查询中转义单引号 '
(另一个单引号)
由于问题已使用C#标记,如果使用连接构建查询,则必然会出现此类错误。 如果你使用 SqlParameter它会更好:
SqlCommand cmd = new SqlCommand("SELECT * FROM CsCustomer WHERE Name =@pName");
cmd.Parameters.Add("@pName", "SA'MIR LUBIS"); //or any GUI control
这也将使您免于SQL注入
如果它们不应该在那里,你需要加倍或删除它们。
SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'
看一下SqlParameter类。 这样做:
var command = new SqlCommand("SELECT * FROM CsCustomer WHERE Name = @name");
command.Parameters.Add("@name", "SA'MIR LUBIS");
在文本中使用双引号('')
SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'
你只需要逃避单引号,如下所示:
SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'
使用它像:
"SELECT * FROM CsCustomer WHERE Name =\'SA\'MIR LUBIS\'"
要么:
@"SELECT * FROM CsCustomer WHERE Name ='SA'MIR LUBIS'"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.