JDBC Statement Nesneleri (Statements PreparedStatement)
JDBC Dersleri‘ne devam ediyoruz. Bu dersimizde JDBC Statement Nesnelerini inceleyeceğiz. (Bu ders önceki derslerimiz ile bağlantılıdır.)
JDBC Derslerinin tüm amacı veritabanımıza bağlanıp, iletişime geçerek işlemler yaptırmak. Şimdi iletişime geçip işlemler yapma zamanı. Sql ifadelerini programımız üzerinden RMDBS’e iletip cevap alabileceğiz. Bu işlemler Statement, PreparedStatement nesneleri ile olmaktadır. Bu üç nesnenin kullanım şekillleri ve performans farklılıkları olmaktadır. Bu nesneleri beraber inceleyelim ve nasıl bir yapıda olduklarına bakalım.
Nesneleri incelemeden önce JDBC ile Veritabanına bağlanalım.
import com.mysql.jdbc.Connection; import com.mysql.jdbc.Statement; import java.sql.DriverManager; import java.sql.SQLException; public class Baglanti { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out.println("Mysql Driver'inde sorun bulunmakta",e); return; } Connection connection = null; try { connection = DriverManager .getConnection("jdbc:mysql://localhost:3306/veritabaniadi","root", "password"); } catch (SQLException e) { System.out.println("Baglantı Sağlanamadı",e); e.printStackTrace(); return; } } }
1) Statement Nesnesi
Temel SQL ifadelerini çalıştırır. Bu temel ifadelerden kastım Select, Update, Delete gibi ifadelerdir. Statement Nesnesi sayesinde SQL ifadesinin bizlere değer döndürme özelliği bulunmaktadır. Statement nesnesini kullanmak için bir değişken oluşturacağız ardından bir de Resulset nesnesini kullanmak için bir değişken kullanacağız bu değişken bizim Sql sorgumuzun sonucunu döndüren değer olacak (gerektiğinde). Statement nesnemizin içine Sql ifadesi yazadıktan sonra bu ifadeyi exequteUpdate parametresi ile göndereceğiz.
Statement st; String Kayit = “INSERT INTO MUSTERI (MUSTERIADI,MUSTERISOYADI) “ + “VALUES (‘Burak’,’Kutbay′)”; st = connection.createStatement(); st.executeUpdate(Kayit); st.close(); connection.close();
2) PreparedStatement Nesnesi
PreparedStatement ile SQL ifadelerimizi veritabanımızda önceden derlenmek üzere gönderebileceğimiz ve her defasında derlenmiş hale değer göndererek tekrar tekrar kullanabileceğimiz bir yapıdır. Statement nesnesinde programımız üzerinde ifade derlenip veritabanımız sadece sorgulama işlemini gerçekleştirmekte idi. PreparedStatement’te ifadeler parametre ile yollanmaktadır. Veri gönderirken bu yöntemi seçmek bize avantaj sağlamaktadır. Önceden derlenme sayesinde bize hız ve düşük kaynak yönetimi sağlamaktadır.
Kullanmı ise şu şekilde olmaktadır.
String sorgu = "INSERT INTO musteri(musteri_id,musteriadi, musterisoyadi,) VALUES" + "(?,?,?)"; PreparedStatement preparedStatement = connection.prepareStatement(sorgu); preparedStatement.setInt(1, 1); preparedStatement.setString(2, "Burak"); preparedStatement.setString(3, "Kutbay"); preparedStatement .executeUpdate();
Aynı kayıt işlemini Statement ile de yapmıştık. Kodları inceleyecek olursanız farkı görebilirsiniz. Yukarıda da anlattığım gib verileri önceden derlenmiş olan prestatment’a verilerimizi tekrar tekrar göndererek işlemleri daha rahat yapmamız mümkün olmaktadır.
Sql’de ki tablolarımızın veritiplerine göre preparedstatement ile bilgileri gönderirken “Set” işlemide tablolarımızdaki veritipi ile uyum sağlaması gerekmektedir. Bunu setInt, setString ve ya setDouble gibi veri tiplerini kullanarak uyumluluk sağlamamız gerekmektedir.
One Comment