使用单个PS执行多个查询

时间:2017-01-11 10:50:08

标签: java mysql jdbc prepared-statement

我已创建预备语句对象。 现在我想得到多个查询的结果。是否可以使用单个预处理语句对象/找到下面的片段代码

PreparedStatement ps = null;    

String moviedirectorQry = "SELECT movie_director FROM movies WHERE movie_title= ?";
ps = dbConnection.prepareStatement(moviedirectorQry);

ps.setString(1, "Twilight");

ResultSet rs=null;

rs = ps.executeQuery(moviedirectorQry);

while (rs.next()) {
    String director_name = rs.getString("movie_director");
    System.out.println("director name : " + director_name);
}

现在我想运行另一个查询..怎么做

1 个答案:

答案 0 :(得分:2)

如果想要对同一类型的不同查询使用相同的PreparedStatement,只更改参数值,则可以,只需先调用clearParameters()清除参数以防万一您希望在设置新参数值之前重复使用它。

代码可能是这样的:

if (ps == null) {
    // The PreparedStatement has not yet been initialized so we create it
    String moviedirectorQry = "SELECT movie_director FROM movies WHERE movie_title= ?";
    ps = dbConnection.prepareStatement(moviedirectorQry);
} else {
    // The PreparedStatement has already been initialized so we clear the parameters' value
    ps.clearParameters();
}
ps.setString(1, someValue);
ResultSet  rs = ps.executeQuery(); 

NB:您应该使用executeQuery()而不是ps.executeQuery(moviedirectorQry),否则将忽略提供的参数值,以便查询失败。