2015-08-02 13 views
6

Ich ging durch Unterschiede zwischen Statement und PreparedStatement in JDBC und sah so viele Vorteile here und here mit PreparedStatement im Vergleich zu Statement.Gibt es irgendwelche Nachteile mit Preparedstatement im Vergleich zu Statement

Einige meiner Kollegen haben gefragt, warum wir Statement noch brauchen und warum es nicht veraltet ist, die Vorteile von PreparedStatement zu betrachten.

Gibt es einen Grund warum wir noch die Anweisung in JDBC API haben?

+3

Abfragen ohne Parameter, die ausgeführt werden sollten –

+3

'PreparedStatement' ist eine Implementierung der' Statement'-Schnittstelle. Deine Frage ist unklar ... – alfasin

+1

Ich bevorzuge immer vorbereitete Aussagen aufgrund von untenstehenden Vorteilen gegenüber Aussagen. 1) PreparedStatement hilft uns bei der Verhinderung von SQL-Injection-Angriffen, da es automatisch die Sonderzeichen entzieht. 2) PreparedStatement ermöglicht es uns, dynamische Abfragen mit Parametereingaben auszuführen. 3) PreparedStatement bietet verschiedene Arten von Setter-Methoden zum Festlegen der Eingabeparameter für die Abfrage. 4) PreparedStatement ist schneller als Statement. 5) PreparedStatement hilft uns beim Schreiben von objektorientiertem Code mit Setter-Methoden 6) PreparedStatement gibt FORWARD_ONLY zurück ResultSet, –

Antwort

2

PreparedStatement wird verwendet, um die dynamischen SQL-Abfragen zu behandeln, wobei Statement verwendet wird, um statische SQL-Abfragen zu behandeln.

0

Gibt es einen Grund, warum wir noch die Anweisung in JDBC API haben?

Ja, weil es in der SQL-Client-Server-API ist. Wenn nicht vorbereitete Anweisungen entfernt werden sollten, würde eine Funktion von SQL in JDBC fehlen.

Wie bereits in anderen Antworten erwähnt, hat PreparedStatement keinerlei Vorteile, wenn keine dynamischen Parameter vorhanden sind. In diesen Fällen ist es etwas prägnanter, eine nicht vorbereitete Anweisung zu verwenden.

Völlig unverdrillt zu diesen Dingen ist die Tatsache, dass PreparedStatement ein Suberinterface of Statement ist, und daher letzteres nicht entfernt werden kann, ohne die API neu zu gestalten. Das hat mehr mit der Java-API und nicht mit SQL zu tun.

Verwandte Themen