Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL功能不受支持_Java_Mysql_Exception_Prepared Statement - Fatal编程技术网

Java SQL功能不受支持

Java SQL功能不受支持,java,mysql,exception,prepared-statement,Java,Mysql,Exception,Prepared Statement,我不断获取功能不受支持的异常,代码如下: public Collection<Product> getProds(String col, String prod) { LinkedList<Product> list = new LinkedList<>(); try { String query = "SELECT * FROM Product where ? LIKE ?"; PreparedStatemen

我不断获取功能不受支持的异常,代码如下:

public Collection<Product> getProds(String col, String prod) {
    LinkedList<Product> list = new LinkedList<>();
    try {
        String query = "SELECT * FROM Product where ? LIKE ?";
        PreparedStatement ps = con.prepareStatement(query);
        ps.setString(1, col);
        ps.setString(1, prod);
        ResultSet rs = ps.executeQuery(query);
        while ( rs.next() ) {
            Product product = new Product(
                    rs.getString("PID"),
                    rs.getString("Artist"),
                    rs.getString("Title"),
                    rs.getString("Description"),
                    rs.getInt("price"),
                    rs.getString("thumbnail"),
                    rs.getString("fullimage")
            );
            list.add( product );
        }
        return list;
    }
    catch(Exception e) {
        System.out.println( "Exception in getProducts(): " + e );
        return null;
    }
}
公共集合getProds(字符串列,字符串prod){
LinkedList=新建LinkedList();
试一试{
String query=“选择*来自何处的产品?如?”;
PreparedStatement ps=con.prepareStatement(查询);
ps.setString(1,列);
ps.setString(1,产品);
结果集rs=ps.executeQuery(查询);
while(rs.next()){
产品=新产品(
rs.getString(“PID”),
rs.getString(“艺术家”),
rs.getString(“标题”),
rs.getString(“说明”),
rs.getInt(“价格”),
rs.getString(“缩略图”),
rs.getString(“fullimage”)
);
列表。添加(产品);
}
退货清单;
}
捕获(例外e){
System.out.println(“getProducts()中的异常:”+e);
返回null;
}
}

我想这和执行官有关。非常感谢您提供的任何帮助

我不熟悉准备好的报表,但您可能必须这样做:

    ps.setString(1, col);
    ps.setString(2, prod);
以便定义要设置的参数。也许您现在设置了第一个参数两次,而没有设置第二个参数。在这个例子中,他们是这样做的


您也不需要将查询作为参数传递给方法
executeQuery()
,因为它将覆盖已知的查询。

您不能使用PreparedStatement的
setString
方法设置列名,您只能设置参数

如果您不知道列名,可以使用Java String的
replace
方法在创建PreparedStatement之前指定列名,例如:

String query = "SELECT * FROM Product where <column> LIKE ?";
query = query.replaceAll("<column>", col);

PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, prod);
ResultSet rs = ps.executeQuery();
String query=“从类似的产品中选择*”;
query=query.replaceAll(“,col);
PreparedStatement ps=con.prepareStatement(查询);
ps.setString(1,产品);
结果集rs=ps.executeQuery();

哦,这是个问题,我没看到哈哈!不幸的是,仍然会遇到同样的问题您确定必须将查询作为参数提供给方法executeQuery吗?请在没有此参数的情况下尝试。preparedStatement已经知道您的查询。也许你正在用这两个来搜索你知道的问题?因为你覆盖了查询。就是这样!非常感谢,如果您想编辑您的答案,我可以将其标记为solvedI已编辑我的答案。如果你把它标记为解决方案,那就太好了。谢谢这给了我一个意想不到的标记:<并且说replaceAll的结果是ignoredAh好的,我已经更新了答案。实际上,它需要是
query=query.replaceAll(“,col”)如果你能在最后删除executeQuery中的“查询”,那么我也会,因为这一点也需要更改:)完成了,我相信这只是一个复制粘贴错误。