apa bedanya statement dan prepare-statement dalam jdbc?


#TanyaJava

apa bedanya statement dan prepare-statement dalam jdbc?

#statement merupakan objek untuk manipulasi data di jdbc, namun tidak mendukung parameter, pembuatan parameter secara manual di statement bisa menyebabkan sql injection, statement disarankan hanya untuk perintah sql tanpa parameter.

#prepareStatement merupakan objek untuk manipulasi data di jdbc yang mendukung parameter, prepare-statement menjamin parameter yang dimasukkan tidak akan dapat menyebabkan sql injection

#contoh SQL INJECTION :

String username = …
String password = …

String sql = “select * from table_user where username = ‘” + username + “‘ and password = ‘” + password + “‘”;

jika
username = “admin”, dan
password = “admin or ‘A’ = ‘A”

maka hasilnya :

sql = “select * from table_user where username = ‘admin’ and password = ‘admin’ or ‘A’ = ‘A'”

dengan begitu orang bisa login, tanpa harus memasukkan username dan password yang benar.

BAHAYA BUKAN?