C# 字符串包含引号字符(')
我有一个where子句的字符串,但该字符串包含引号字符' 例如: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)
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转换代码