LIKE用のJava PreparedStatement SQL構文

java mysql mysql-error-1064
LIKE用のJava PreparedStatement SQL構文

私はそのように準備された声明を持っています:

private static final String SQL_LIST_GROUP = "SELECT *
                                                FROM table
                                               WHERE group LIKE ?;"

私の機能、私の機能は次のとおりです(短縮され、SQLオブジェクトが適切に宣言されています):

public List< MyType > getGroupList(Long grp) {
   Connection link = null;
    PreparedStatement query = null;
    ResultSet rstList = null;
    List< MyType > list = new ArrayList< MyType >();
    try {
        link = MySQL.getConnection();
        link.setAutoCommit(false);
        query = link.prepareStatement(SQL_LIST_GROUP);
        query.setString(1, "%"+grp.toString()+",%");
        rstList = query.executeQuery();
        link.commit();
        while (rstList.next()) {
            list.add(MapFields(rstList));
        }
        return list;
    } catch (SQLException e) {
        throw new DAOException(e);
    } finally {
        close(link, query, rstList);
    }
}

接続は正しく行われますが、構文エラーが発生します。値が解析された準備済みステートメントは次のとおりです。

"SELECT *
   FROM table
  WHERE group LIKE '%grp%';"

助言がありますか?

  2  0


ベストアンサー

後尾のせいでDB爆弾を見たことがあります。以前の動的SQLで。 それを削除すると動作しますか?

1


また、PreparedStatemtsのセミコロンに関する問題も確認しています。

また、メソッドのパラメーターは「grp」と呼ばれますが、「group」はsetStringの呼び出しで使用されています。 それはタイプOですか、それとも問題の一部ですか? group.toString()で十分です。valueOf/ longValueのものは不要です。

もう1つ、「グループ」はMySQLの予約語です。

1


タイトルとURLをコピーしました