此方法应采用两个用户输入"低和"高"来自jsp页面,并在此方法中使用它们来获取价格介于" low"之间的属性列表。和"高"。
我在tomcat-log中看到的一个错误是:
MySQLSyntaxErrorException:SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,以获得在' BETWEEN 100000.0和300000.0'附近使用的正确语法。在第1行
100000.0和300000.0是我输入的输入。
public static ArrayList<Property> search(double low, double high) {
ConnectionPool pool = ConnectionPool.getInstance();
Connection connection = pool.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
String query = "select * from properties"
+ "WHERE price BETWEEN ? and ?";
try {
ps = connection.prepareStatement(query);
ps.setDouble(1, low); //this should set user input = ?
ps.setDouble(2, high); //this should set user input = ?
rs = ps.executeQuery();
ArrayList<Property> list = new ArrayList<>();
while (rs.next()) {
Property p = new Property();
p.setName(rs.getString("name"));
p.setPrice(rs.getDouble("price"));
list.add(p);
}
return list;
} catch (SQLException e) {
System.out.println(e);
return null;
} finally {
DBUtil.closeResultSet(rs);
DBUtil.closePreparedStatement(ps);
pool.freeConnection(connection);
}
}
答案 0 :(得分:2)
您的查询中缺少空格
String query = "select * from properties"
+ " WHERE price BETWEEN ? and ?";
如你所知,这个词会变成propertiesWHERE