2016-06-16 17 views
0

Gibt es eine einfache Möglichkeit, PreparedStatement etwas hinzuzufügen? Zum Beispiel:Gibt es eine Möglichkeit, PreparedStatement zu aktualisieren?

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

Ich weiß, dass es nicht Methode hinzufügen wird, meine Frage ist: Gibt es etwas, das ich benutzen kann?

+0

Nr. Sobald es vorbereitet ist, ist die Aussage gemacht. Es würde bedeuten, einen Laib Brot zu machen und dann zu erkennen, dass man Rosinen hinzufügen wollte. Die Rosinen müssen vor dem Backen in den Teig gegeben werden. nachträglich hinzuzufügen ist einfach nicht praktikabel. z.B. Es ist Build -> Vorbereiten, nicht Build-> Vorbereiten-> Build-> Buildbuildbuildbuild-> ausführen. –

Antwort

0

Sie könnten Ihre SELECT Aussage mit einem StringBuilder, und dann passieren die fertiggestellte Zeichenfolge connection.prepareStatement() konstruieren.

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

Bitte beachte, dass ich den WHERE TRUE Trick verwendet haben, die Logik der Konstruktion der WHERE Klausel zu vereinfachen.

0

Nein, Sie können nicht einfach .. Sie können wie folgt tun:

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