为什么我为预准备语句收到语法错误?

时间:2017-05-07 15:03:42

标签: java mysql sql prepared-statement

我已经编写了一个准备好的声明,但它在?处给出了语法错误。我无法理解什么是错的。它应该传递一个电影名称并将结果作为该电影的导演

stmt=getConnection().createStatement();
        String sql="SELECT directors FROM moviedata WHERE moviedata.title = ?";
        PreparedStatement preparedStatement=conn.prepareStatement(sql);
        preparedStatement.setString(1,movieName);
        rs=preparedStatement.executeQuery(sql);

1 个答案:

答案 0 :(得分:5)

问题在于:

rs=preparedStatement.executeQuery(sql);

您不应将SQL String传递给executeQuery(),因为预准备语句已包含SQL String,其中?占位符替换为{{movieName 1}}。

使用:

rs=preparedStatement.executeQuery();