Servus
Mal ganz generell:
Wie die
API schon sagt, handelt es sich um ein
precompiled SQL statement
Das bedeutet, dass die SQL-Syntax schon zum Zeitpunkt der Erstellung des PreparedStatements validiert und das Statement kompiliert wird. Daher muss dies beim Ausführen der Abfrage nicht mehr getan werden, was effektiv bei mehrfacher Ausführung des Statements einen Performance-Zuwachs bedeutet. Da dies allerdings von Treiber / DBMS abhgängig ist, würde ich diesen Punkt nicht allzu hoch bewerten.
Für mich viel schwerwiegender:
Fälle wie der hier diskutierte - Du brauchst Dich nicht um Formate kümmern. Mit obigem Codeausschnitt könntest Du einfach so die Datenbank wechseln, auf die Du zugreifst, und der Code würde immer noch funktionieren, selbst wenn die Datenbank das ISO-Format nicht unterstützen würde, ganz einfach weil die Umwandlung in ein konformes Datumsformat direkt vom Treiber übernommen wird (anderes Beispiel: Übergabe von Strings - Hochkommata vs Anführungszeichen).
Mehr Möglichkeiten - einen Binary-Stream (für BLOB-Objekte) z.B. kriegst Du nicht in ein normales Statement.
Die Lesbarkeit des Codes - anstatt jedes Mal einen neuen String zu generieren halte ich das Setzen von Parametern für deutlich übersichtlicher, z.B. folgende imaginäre, aber nicht praxisferne Herangehensweise:
Code: Alles auswählen
oStatement = oConnection.createStatement
For i=0 To 5
sSQL = "UPDATE ""meineTabelle"" SET ""X"" = " & i*10 & " WHERE ""ID"" = " & i
oStatement.executeUpdate(sSQL)
Next i
liest sich in meinen Augen erheblich schlechter als:
Code: Alles auswählen
oStatement = oConnection.prepareStatement("UPDATE ""meineTabelle"" SET ""X"" = ? WHERE ""ID"" = ?")
For i=0 To 5
oStatement.setInt(1,i*10) 'SET X
oStatement.setInt(2,i) 'SET ID
oStatement.executeUpdate
Next i
Zusätzliche Informationen und Vorteile kannst Du auf Seiten wie z.B.
Javarevisited nachlesen.