Ich verwende PrepareStatement und BatchUpdate für die Ausführung einer UPDATE-Abfrage. In for-Schleife erstelle ich einen Batch. Am Ende der Schleife führe ich Batch aus.PreparedStatement und Nullwert in der WHERE-Klausel
Die obige Logik funktioniert einwandfrei, wenn die SQL-Abfrage, die in PrepareStatement verwendet wird, in WHERE-Werten keine Nullwerte enthält.
Update-Anweisung schlägt fehl, wenn in der WHERE-Clasue ein Nullwert vorhanden ist.
Mein Code sieht ungefähr so aus,
connection = getConnection();
PreparedStatement ps = connection.prepareStatement(
"UPDATE TEST_TABLE SET Col1 = true WHERE Col2 = ? AND Col3 = ?");
for (Data aa : InComingData){
if(null == aa.getCol2()){
ps.setNull(1, java.sql.Types.INTEGER);
}
else {
ps.setInteger(1,aa.getCol2())
}
if(null == aa.getCol3()) {
ps.setNull(2, java.sql.Types.INTEGER);
}
else {
ps.setInteger(2,aa.getCol3())
}
ps.addBatch();
}
ps.executeBatch();
connection.commit();
Jede Hilfe würde geschätzt.
Vielen Dank für respone. Aber was soll ich tun, damit es funktioniert? – bond
Nun, bauen Sie Ihre SQL-Abfrage dynamisch abhängig von der Ungültigkeit Ihrer Argumente. –