2016-06-16 19 views
0

PreparedStatementに何かを追加する簡単な方法はありますか?たとえば :PreparedStatementを更新する方法はありますか

ps = connection.prepareStatement("SELECT DISTINCT nazivpredmeta, iddokumenta, nazivdokumenta, putanja, datumskeniranja FROM skeniranidokumenti , predmet WHERE " 
if(osnovnibroj!=null){ 
    ps.add("predmet.osnovnibroj=? "); 
    ps.setObject(1, osnovnibroj); 
} 
if(iddepartmana!=null){ 
if(osnovnibroj!=null){ 
    ps.add("AND skeniranidokumenti=? "); 
    ps.setObject(1, iddepartmana); 
}else{ 
    ps.add("skeniranidokumenti=? "); 
    ps.setObject(1, iddepartmana); 
} 

が、私は方法が追加されていないことを知って、私の質問は:私が使用できるものはありますか?

+0

ありません。準備が整ったら、その声明が完成します。レーズンを加えたいと思っていたらパンのパンを作ったのと同じだろう。レーズンはベーキングの前に生地に加えなければならない。後で追加することは現実的ではありません。例えばそれはビルド - >準備ではなく、ビルド - >準備 - >ビルド - >ビルドビルドビルドビルド - >実行。 –

答えて

0

あなたはStringBuilderを使用して、SELECTステートメントを構築し、その後connection.prepareStatement()に完成した文字列を渡すことができます。私はWHERE句を構築するロジックを簡素化するためにWHERE TRUEトリックを使用しました

StringBuilder sb = new StringBuilder("SELECT DISTINCT nazivpredmeta, iddokumenta, nazivdokumenta, putanja, datumskeniranja FROM skeniranidokumenti , predmet WHERE TRUE"); 
if (osnovnibroj != null) 
{ 
    sb.append(" AND predmet.osnovnibroj = ?"); 
} 
if (iddepartmana != null) 
{ 
    sb.append(" AND skeniranidokumenti = ?"); 
} 

ps = connection.prepareStatement(sb.toString()); 

if (iddepartmana != null) 
{ 
    if (osnovnibroj != null) 
    { 
     ps.setObject(1, osnovnibroj); 
     ps.setObject(2, iddepartmana); 
    } 
    else 
    { 
     ps.setObject(1, iddepartmana); 
    } 
} 
else if (osnovnibroj != null) 
{ 
    ps.setObject(1, osnovnibroj); 
} 

注意。

0

ありませんあなたは...単にあなたはこのように行うことができません。

String query="SELECT DISTINCT nazivpredmeta, iddokumenta, nazivdokumenta, putanja, datumskeniranja FROM skeniranidokumenti , predmet WHERE "; 

      if(osnovnibroj!=null){ 
       query=query+"predmet.osnovnibroj=? "; 
       ps = connection.prepareStatement(query); 
       ps.setObject(1, osnovnibroj); 
      } 
関連する問題