繁体   English   中英

字符串包含引号字符(')

[英]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\'"

要么:

@"SELECT * FROM CsCustomer WHERE Name ='SA'MIR LUBIS'"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM