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

C# 字符串包含引号字符('),c#,.net,sql-server,C#,.net,Sql Server,我有一个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)

我有一个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);

在文本中使用双引号


从CsCustomer中选择*Name='SAMIR LUBIS'

您应该使用参数化查询。您可以在查询“另一个单引号”中转义单引号

由于问题已经用C标记,如果您使用连接构建查询,那么您肯定会遇到这样的错误。如果你用它会更好 比如:

SqlCommand cmd = new SqlCommand("SELECT * FROM CsCustomer WHERE Name =@pName");
cmd.Parameters.Add("@pName", "SA'MIR LUBIS"); //or any GUI control
这也将使您不必像以下那样使用它:

"SELECT * FROM CsCustomer WHERE Name =\'SA\'MIR LUBIS\'"
或:


你需要把它们折叠起来,如果它们不应该在那里,就把它们取下来

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

用两个引号代替

SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'
另外,我建议大家看一看这门课。这样做:

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'

您只需跳过单个引号,如下所示:

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'

OP不需要引号-只需将“向上翻倍”而不是引号。我想将结果显示在表格单元格/文本框中。我怎么能做到这一点?@FirmaAgnes去看看,SO的想法是帮助解决一个特定的问题,而不是完成你的全部任务task@FirmaAgnes,这是另一个问题。这还取决于您的目标应用程序类型,但通常您可以使用DataGrid并从DB绑定数据。你需要搜索它并返回,所以如果你被困在某个地方,这可能是一个很好的起点@Habib,对不起,我认为我的问题已经完成,请检查我编辑的问题。谢谢before@FirmaAgnes,我不确定您的方法Db.SingleString的实现。您可以改为使用简单的ADO.Net参数化查询,或者现在您可以尝试使用r.Name.Replace',,它将转义单引号,稍后您可以使用SqlParameter转换代码