2013-05-12 34 views
1

我試圖在NetBeans與我的小服務程序來執行的代碼下面一行:SQL SELECT查詢不可變參數的工作在我servelets

ResultSet rs = stmnt.executeQuery("select * from ZEE.WORDCOUNT where WORD =" + searchTxt); 

其中searchTxt是字符串變量。

但它表示「Column'zeeshan'不在FROM列表中的任何表中,或者出現在連接規範中,並且在連接的範圍之外......」。

它確實工作得很好,如果我提供的硬編碼值,而不是變量,如:

ResultSet rs = stmnt.executeQuery("select * from ZEE.WORDCOUNT where WORD= 'zeeshan'"); 

我沒有變,是什麼我失蹤?

回答

1

您錯過了正在構建的sql字符串周圍的單引號。所以這應該工作:

ResultSet rs = stmnt.executeQuery("select * from ZEE.WORDCOUNT where WORD ='" + searchTxt+"'"); 

請注意,以這種方式構建的SQL語句是非常危險的,因爲它會打開你的應用的SQL注入攻擊。改爲使用綁定參數。

這也將允許更好地緩存許多rdbms上的解析語句。

+0

完美:)謝謝 – Zeeshan 2013-05-12 12:52:21

+0

它要求我等待8分鐘:P這就是爲什麼我這麼晚了 – Zeeshan 2013-05-12 13:02:15

+0

@Zeeshan:你應該使用'PreparedStatement'來代替。 – 2013-05-12 13:42:53