查询中的MySQLSyntaxErrorException

时间:2015-06-01 14:20:45

标签: java mysql jdbc

session.getAttribute('loginId')//giving 1

ResultSet rs=st.executeQuery("select * from interest where loginid='session.getAttribute('loginId')'");

ResultSet rs=st.executeQuery("select * from interest where loginid='session.getAttribute("loginId")'");

这给了我sql Exception。

我的查询中有什么问题?而 -

ResultSet rs=st.executeQuery("select * from interest where loginid='1'");

运行正常。

我不能通过在String Object中存储loginId来调用它。

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'loginId')'' at line 1

2 个答案:

答案 0 :(得分:2)

传递从getAttribute返回的值,而不是文字值session.getAttribute('loginId')

PreparedStatement preparedStatement = 
            conn.prepareStatement("select * from interest where loginid=?");
preparedStatement.setString(1, session.getAttribute("loginId"));

答案 1 :(得分:-1)

你必须连接字符串。不将参数包含在一个字符串中:

更改为:

ResultSet rs=st.executeQuery("select * from interest where loginid='"+session.getAttribute("loginId")+"'");

或者更好地使用准备好的陈述。它会阻止你进行sql注入,你的查询将更容易阅读。