【问题标题】:Having sql error whenever i submit my form每当我提交表单时出现 sql 错误
【发布时间】:2016-11-23 21:19:30
【问题描述】:

我正在尝试从 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();
            }

【问题讨论】:

  • 在第二个 AND 之前添加一个空格并将其转换为参数化查询。

标签: mysql sql servlets


【解决方案1】:

AND前要加一个空格:

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

【讨论】:

    【解决方案2】:

    你忘记了一个空格:

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

    所以你正在生成

    ... userID != fooAND displayname
    

    如果您查看生成的sql,您就会看到这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-28
      • 2014-02-25
      • 2018-11-24
      • 2017-08-24
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多