在SQL

2015-07-13 91 views
0

我試圖使用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

回答

1

試試這個

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來說是一個簡單的方法。

1

拆除該行所有"

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

你是不是串聯任何那裏。

1

請使用以下方法來刪除不必要的報價:

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

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

1

你可以簡單地寫爲

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

更改下面的代碼

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

你錯過了加運算

3

有導致所有問題一個基本的錯誤:你不不使用參數化查詢。這將a)保護您的代碼免受SQL注入攻擊,並且b)讓您的SQL更易於編寫。

在我的首選編程語言,C#,它是這樣的:

"select from pessoal where nome_Pessoa like @name" 

哪裏@name是你必須在傳遞參數的名稱

它似乎根據你的代碼正在使用Java。 This可能會幫助你。