我正在尝试使用netbeans中的servelet执行以下代码行:
ResultSet rs = stmnt.executeQuery("select * from ZEE.WORDCOUNT where WORD =" + searchTxt);
其中 searchTxt 是字符串变量。
但它说“列'zeeshan'要么不在FROM列表中的任何表中,要么出现在连接规范中,并且不在连接范围内......”。
它真的很好,如果我提供硬编码值而不是变量,如:
ResultSet rs = stmnt.executeQuery("select * from ZEE.WORDCOUNT where WORD= 'zeeshan'");
我没有得到,我错过了什么?
答案 0 :(得分:1)
您缺少围绕正在构建的sql字符串的单引号。所以这应该有效:
ResultSet rs = stmnt.executeQuery("select * from ZEE.WORDCOUNT where WORD ='" + searchTxt+"'");
请注意,以这种方式构造SQL语句非常危险,因为它会为SQL注入攻击打开您的应用程序。改为使用绑定参数。
这也可以在许多rdbms上更好地缓存已解析的语句。