在SQL

问题描述:

我试图使用LIKE操作在SQL

String camp= nomePesquisa.getValue(); 
String ql = "select from pessoal where nome_Pessoa like ""'%"+camp+"%'" ""; 

进行查询,并提供了以下错误

在该行 多个标记串查询报价问题“” “”,删除此 令牌

+1

'String ql =“从pessoal中选择,其中nome_Pessoa像'%'+ camp +”%'“;' –

+3

有很多引号正在进行。另外,要小心[Bobby Tables](http://bobby-tables.com/)。 – Amadan

+2

你正在使用什么_scripting_语言?有人可以帮助您避免* SQL注入攻击*的缺陷。你不应该根据下面的答案解决这个问题,请采取@Patrick Hofman的建议并使用一个参数。 – christiandev

试试这个

String ql = "select * from pessoal where nome_Pessoa like '%"+camp+"%'+ "; 

你已经投入了很多quetas,但是如果你因为某种原因需要他们用蜜蜂串起来,你应该逃脱他们\"

P.S.你忘了输入您想选择

Select * FROM tableSELECT col1,col2 FROM TABLE

P.S.S.什么请不要像这样查询参数,因为这对于Query Injection来说是一个简单的方法。

拆除该行所有"

String ql = "select from pessoal where nome_Pessoa like '%"+camp+"%'+ "; 

你是不是串联任何那里。

请使用以下方法来删除不必要的报价:

String ql = "select from pessoal where nome_Pessoa like '%"+camp+"%'+ "; 

此外,您还可以使用一些escape字符。

你可以简单地写为

String ql = "select from pessoal where nome_Pessoa like '%" + camp + "%'"; 

更改下面的代码

String ql = "select from pessoal where nome_Pessoa like '%"+camp+"%'+ "; 

你错过了加运算

有导致所有问题一个基本的错误:你不不使用参数化查询。这将a)保护您的代码免受SQL注入攻击,并且b)让您的SQL更易于编写。

在我的首选编程语言,C#,它是这样的:

"select from pessoal where nome_Pessoa like @name" 

哪里@name是你必须在传递参数的名称

它似乎根据你的代码正在使用Java。 This可能会帮助你。