> apa sih sebenarnya beda statement dengan preparedstatement?> trus saat kapan kita menggunakan statement dan kapan kita menggunakan> preparedstatement
dari namanya kita bisa melihat bahwa preparedstatement itu adalah
statement yang sudah dipersiapkan, konsekuensinya adalah query yang
dieksekusi di prepared statement tidak bisa dirubah, contohnya :
insert into user(username,password) values (?,?)
sedangkan dengan statement query bisa berubah2 sesui kebutuhan,
misalnya untuk proses pencarian yang diperlukan proses penggabungan
kondisi2 pencarian ke dalam query, misalnya :
select * from user where username='" + username + "' and password = '"
+ password + "'";
masalah akan muncul kalau misalnya nilai dari variabel username diisi
dengan string :
String username = "ida;drop database mysql;";
nah lhoo... bahaya kan? inilah bentuk serangan hacker yang disebut
dengan sql injection. kalau dengan prepared statement bisa dihindari.
caranya dengan menuliskan query diatas menggunakan parameter query:
select * from user where username = ? and password = ?
apapun yang dimasukkan ke dalam parameter (?) akan dianggap sebagai
value biasa, bukan sebagai query, misalnya kita masukkan nilai
username seperti diatas (ada drop database-nya) maka gak akan
berpengaruh, karena statement tersebut tetap dianggap value biasa,
bukan query.
Jadi, sejauh mungkin selalu gunakan prepared statement!!
selain alasan diatas, prepared statement dieksekusi jauh lebih
kencang, dan kita bisa menggunakan batch execution kalau mau bulk
insert atau bulk update.




0 komentar:
Posting Komentar