2016-07-20 8 views
0

mySQLデータベースからデータを取得してarrayListに格納しようとしています。しかし、このコードセットを実行すると、このエラーが発生します。フォームを提出するとSQLエラーが発生する

SQL構文にエラーがあります。私は、任意のキーワードを使用していない、1

しかしラインで「%」のDisplayName LIKE '%近くを使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認し、私はのために単一引用符が含まれてワイルドカードオペレータ。私は間違ってやったことがありますか?

あなたが AND前に空白を追加する必要が
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(); 
      } 
+1

2番目のANDの前にスペースを追加し、これをparamaterizedクエリに変換します。 –

答えて

2

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

あなたがスペースを忘れてしまった:

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

ますので、もしあなたが」

... userID != fooAND displayname 

を生成していますdを見てください3210あなたが生成した、あなたはこれを見ていたでしょう。

関連する問題