Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me
Showing posts with label jdbc nasıl kullanılır. Show all posts
Showing posts with label jdbc nasıl kullanılır. Show all posts


Statement nesneleri ile SQL ifadelerini veritabanına gönderebilir ve çalıştırabiliriz. Bu nesneler ile parametre geçişi de yapabiliriz. Ayrıca bu nesneler bir veritabanında kullanılan Java ve SQL veri türleri arasındaki veri türü farklılıklarını köprülemeye yardımcı olan yöntemleri de tanımlarlar.

Statement Nesneleri
  • Statement: Statik SQL sorgularını çalıştırmak için kullanılır. Dinamik parametre geçişi yoktur. Bir sorgu çok defa çalıştırılmayacaksa kullanılması mantıklıdır.
  • PreparedStatement: Dinamik SQL sorgularını çalıştırmak için kullanılır. Yani sql sorgularımıza parametre geçişi yapabiliriz. Bir sorgu çok defa çalıştırılcaksa kullanılması mantıklıdır. Çünkü Statement nesnesi ile sorgu her çalıştırıldığında derlenirken PreparedStatement nesnesi sorguyu tek bir kez derler.
  • CallableStatement: Veritabanına kaydedilmiş prosedürleri çalıştırmak için kullanılır. Ayrıca dinamik parametreleri kabul eder.

Statement Kullanımı

Bir SQL deyimini yürütmek için bir Statement nesnesini kullanmadan önce, aşağıdaki örnekte olduğu gibi, Connection nesnesinin createStatement() yöntemini kullanarak bir tane oluşturmanız gerekir.

Statement stmt = null;
try {
stmt = conn.createStatement( );
. . .
}
catch (SQLException e) {
. . .
}
finally {
. . .
}

Bir Statement nesnesini oluşturduktan sonra, bunu bir SQL ifadesini yürütmek için üç yürütme yönteminden biriyle kullanabilirsiniz.
  • boolean execute (String SQL): Bir ResultSet nesnesi alınabiliyorsa true, aksi takdirde false değerini döndürür. Dinamik SQL kullanmanız gerektiğinde bu yöntemi kullanılabilir.
  • int executeUpdate (String SQL): SQL ifadesinin yürütülmesinden etkilenen satır sayısını döndürür. Bir INSERT, UPDATE veya DELETE ifadesi gibi etkilenen çok sayıda satır almayı beklediğiniz SQL ifadelerini çalıştırmak için bu yöntemi kullanabiliriz.
  • ResultSet executeQuery (String SQL): Bir ResultSet nesnesi döndürür. Bir SELECT deyiminde olduğu gibi bir sonuç kümesi elde etmeyi beklediğimiz durumlarda kullanabiliriz.
PreparedStatement

PreparedStatement pstmt = null;
try {
String SQL = "Update Employees SET age = ? WHERE id = ?";
pstmt = conn.prepareStatement(SQL);
. . .
}
catch (SQLException e) {
. . .
}
finally {
. . .
}




JDBC (Java Database Connectivity), Java programlama dili ile veritabanları (Mysql, Oracle, MSSQL, vs.) arasında bağlantı kurulmasını ve çeşitli işlemlerin yapılmasını sağlayan bir Java kütüphanesidir.

JDBC kütüphanesi ile aşağıdaki veritabanı işlemleri yapılabilir;
  • Veritabanı bağlansının yapılması.
  • SQL deyimleri oluşturulması
  • Veritabanında SQL sorgularının çalıştırılması.
  • Elde edilen kayıtları görüntülemesi ve değiştirilmesi.

JDBC Mimarisi 2 katmandan oluşur.
  • JDBC API: Uygulama ile JDBC Yöneticisi bağlantısını sağlar.
  • JDBC Driver API: JDBC Yöneticisi ile Sürücü Bağlantısını destekler. Aşağıdaki mimari diyagram, JDBC sürücüleri ve Java uygulaması ile ilgili sürücü yöneticisinin yerini göstermektedir.

Ortak JDBC Bileşenleri

JDBC API, aşağıdaki arayüzleri ve sınıfları sağlar;
  • DriverManager: Bu sınıf, veritabanı sürücülerinin bir listesini yönetir. Java uygulamasından gelen bağlantı istekleri ile uygun veritabanı sürücüsünü eşleştirir ve bağlantı oluşturur.
  • Driver: Bu arayüz veritabanı sunucusuyla olan iletişimi idare eder. Nadiren bu nesne kullanılır. Genellikle bu nesneyi yöneten DriverManager nesnesi üzerinden erişim yapılır.
  • Connection: Bu arayüz, bir veritabanıyla iletişim kurmak için tüm yöntemleri içerir. Connection nesnesi iletişim bağlamını temsil eder, yani veritabanıyla yapılan tüm iletişim yalnızca bağlantı nesnesi aracılığıyla yapılır.
  • Statement: Bu arayüz ile SQL ifadelerini veritabanına gönderilir ve çalıştırılır. Ayrıca bu sınıftan türemiş alt sınıflar ile parametre geçişide yapılabilir.
  • ResultSet: Bu nesneler, SQL sorgusu çalıştırıldıktan sonra veritabanından alınan verileri tutar. Verilerin arasında dolaşmanıza izin vermek için bir işaretçi görevi görür.
  • SQLException: Bu sınıf, bir veritabanı uygulamasında meydana gelen hataları yönetir.

Örnek JDBC Kodları