我有一个where子句的字符串,但该字符串包含引号character(')
示例:
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);
答案 0 :(得分:9)
您应该使用参数化查询。您可以在查询'
中转义单引号(另一条单引号)
由于问题已使用C#标记,如果使用Concatenation构建查询,则必然会出现此类错误。如果您使用 SqlParameter,效果会更好 类似的东西:
SqlCommand cmd = new SqlCommand("SELECT * FROM CsCustomer WHERE Name =@pName");
cmd.Parameters.Add("@pName", "SA'MIR LUBIS"); //or any GUI control
这也可以帮助您免除SQL Injection
答案 1 :(得分:2)
如果它们不应该在那里,你需要加倍或删除它们。
SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'
答案 2 :(得分:2)
看一下SqlParameter课程。这样做:
var command = new SqlCommand("SELECT * FROM CsCustomer WHERE Name = @name");
command.Parameters.Add("@name", "SA'MIR LUBIS");
答案 3 :(得分:1)
在文字
中使用双引号('')SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'
答案 4 :(得分:1)
使用两个引号代替
SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'
答案 5 :(得分:1)
你只需要逃避单引号,如下:
SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'
答案 6 :(得分:0)
使用它像:
"SELECT * FROM CsCustomer WHERE Name =\'SA\'MIR LUBIS\'"
或者:
@"SELECT * FROM CsCustomer WHERE Name ='SA'MIR LUBIS'"