每当我提交表单时出现sql错误

时间:2016-07-20 15:24:41

标签: mysql sql servlets

我试图从mySQL数据库中获取数据并存储到我的arrayList中。但是,每当我运行这组代码时,我都会收到此错误

  

您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以便在第1行的'displayname LIKE'%A%'附近使用正确的语法

但是,我没有使用任何关键字,我包含了外卡运营商的单引号。我在哪里做错了或在sql语句中遗漏了什么?

String sql = "SELECT * FROM azq.registration WHERE userId NOT IN (SELECT friendId FROM azq.friendlist WHERE userId ="
                        + session.getAttribute("userId")
                        + ") AND userId !="
                        + session.getAttribute("userId")
                        + "AND displayname LIKE '%" + searchText + "%'";
                // create the java statement
                Statement st = conn.createStatement();

                // execute the query, and get a java resultset
                ResultSet rs = st.executeQuery(sql);

                // iterate through the java resultset
                while (rs.next()) {
                    Friends newList = new Friends();
                    newList.setFirstName(rs.getString("firstName"));
                    newList.setLastName(rs.getString("lastName"));
                    newList.setUserId(rs.getString("userId"));
                    newList.setDisplayname(rs.getString("displayname"));

                    resultList.add(newList);
                }
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }

2 个答案:

答案 0 :(得分:2)

您必须在AND之前添加空白:

                + session.getAttribute("userId")
                    + " AND displayname LIKE '%" + searchText + "%'";

答案 1 :(得分:0)

你忘记了一个空间:

                    + ") AND userId !="
                    + session.getAttribute("userId")
                    + "AND displayname LIKE '%" + searchText + "%'";
                       ^---here

所以你正在生成

... userID != fooAND displayname

如果您查看自己生成的sql,就会看到这一点。