2017-03-02 117 views
2

我試圖檢索基於存儲在skw文本框中的關鍵字的記錄,當我傳遞USN或Age時,它會給出正確的結果,但它不能與Name 。它拋出錯誤:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExceptionUnknown列「NAME_KEYWORD(SKW)」在「where子句」MySQLSyntaxErrorException:'where子句'中的未知列'John'

ResultSet res=stmt.executeQuery("select * from Student where USN="+skw.getText()+" or Name='"+skw.getText()+"' or Age="+skw.getText()+""); 
+0

的可能的複製[com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知列「史密斯」在「where子句」](HTTP: //stackoverflow.com/questions/1632893 5/com-mysql-jdbc-exceptions-jdbc4-mysqlsyntaxerrorexception-unknown-column-smith) –

+0

不要將值連接到查詢字符串中。您的代碼易受SQL注入攻擊。相反,您應該使用帶有參數的準備好的語句,然後設置每個參數的值。司機然後將正確處理任何必要的逃跑等。 –

回答

0

如果您選擇的文本,你應該用單引號的文本換值

ResultSet res=stmt.executeQuery("select * from Student where USN='" 
    +skw.getText()+"' or Name='"+skw.getText()+"' or Age='"+skw.getText()+"'"); 

否則所得到的文本中用作列名

+0

爲什麼downvote爲一個接受的答案? – scaisEdge

+1

這不是我,但可能會因爲沒有將提問者指向參數化的SQL而降低投票率。 –

+0

@LukeWoodward非常感謝您的建議。 – scaisEdge