2017-01-11 9 views
0

私はprepared statementオブジェクトを作成しました。 今、私は複数のクエリの結果を取得したい。それは考え方が異なるため、同じPreparedStatementを使用する場合は複数のクエリを1つのPSで実行する

+0

例では1つのクエリしか使用していませんか?あなたは複数を使用しようとしましたか? –

+0

私は約1つのクエリについて言及しましたが、私は複数のqueiresを使用したい – kps

答えて

2

を行う方法を...今私は別のクエリを実行する単一準備文オブジェクトを使用して行うために/

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); 
} 

下の部分コードを見つけることができ新しいパラメータの値を設定する前に再利用したい場合は、最初に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)別段のパラメータの値は、クエリが失敗するように無視されます使用することを想定しています。

+0

あなたはevrytimeと言うことを意味するので、if条件を使用する必要があります。 – kps

+0

PSを再利用するかどうかを知る必要があります。再使用する場合は、パラメータをクリアする必要があります。 –

+0

'PreparedStatement'(または' CallableStatement')で 'executeQuery(String)'を使うと、JDBC4以降に 'SQLException'を投げなければなりません。その前に、実装がそれを許さないという暗黙の前提でした。また、技術的には、再利用する前に 'clearParameters()'を呼び出す必要はありませんが、すべてのパラメータを設定しないと、以前の実行の値を再利用することができます。 –

関連する問題