-
JDBC, sorguyu veritabanına bağlamak ve yürütmek için kullanılan bir Java API'sidir. JDBC API, veritabanına bağlanmak için JDBC sürücülerini kullanır.
-
Platform bağımsızdır. Veri tabanı yapısından bağımsız olduğu için SQL destekleyen bütün veri tabanlarıyla çalışır.
-
Driver yüklenmesi, veritabanı bağlantısı'nın yapılması, sorguların yapılması ve sonuçların getirilmesi aşamalarından oluşur.
getConnection(String url, String user, String password);
Yukarıda bulunan metod ile veritabanı bağlantısı yapılır. Bu metod return olarak Connection interface'i miras alan bir class döndürür.
Connection interface'inde yer alan metodlar ile veritabanı ile ilgili işlemleri gerçekleştirebileceğimiz tanımlara erişilir. Örnek olarak aşağıdaki metod ile veritabanında bulunan şema bilgilerine ulaşabiliriz.
Connection.getSchema();
Diğer tüm veritabanı bilgilerine ulaşabilmek için getMetaData() yöntemi kullanılır.
Connection#getMetaData().getSchemas();
Connection#getMetaData().getTableTypes();
Connection#getMetaData().getTypeInfo();
Connection#getMetaData().getDriverName();
Veritabanı bağlantısı yaparken kullanılacak olacak veritabanının driver'ı proje içine eklenmesi gerekir. Bu işlem komut yorumlayıcısına jar dosyasının dahil edilmesi, IDE arayüzünde libraries bölümüne eklenmesi veya Maven gibi paket yöneticilerinin kullanımıyla yapılır.
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.32</version>
</dependency>
Tüm veri tabanı işlemleri bittikten sonra connection.close(); metodu ile bağlantı kapatılır.
Connection.close();
Veritabanı sorgularını gerçekleştirebilmemiz için Statement, PreparedStatement, CallableStatement interface'lerini kullanmalıyız.
-
Doğrudan veri çekme listeleme işlemleri için uygulanabilir.
Statement nesnesi oluşturalım.
Statement statement = connection.createStatement();
execute() metodu kullanılarak sql sorguları yazılabilir.
statement.execute("sql-query");
Sorgu sonrası sonuçları alabilmek için
statement.getResultSet();
Birden fazla toplu sorgu işlemleri yapabilmek için executeBatch kullanılır. Ancak bu yöntemi kullanabilmek için addBatch() ile metodları eklemek gerekir.
statement.addBatch("query-1"); statement.addBatch("query-2"); statement.addBatch("query-3"); statement.executeBatch();
-
Genellikle filtreleme WHERE işlemi kullanıldığı zaman yada INSERT, UPDATE işlemlerinde kullanılır.
-
Statement'dan farkı yazılan sql sorguları tekrar tekrar kullanılabilir olmasıdır.
Kullanılabilecek örnek SQL sorguları
INSERT INTO student (id, name, school) VALUES (?,?,?)
UPDATE student SET name=?, school=? WHERE id=?
DELETE FROM student WHERE id = ?
-
Ayrıca SQL sorgularında yer alan metodlara değer atamak için setVeriTipi(setString, setInt) gibi metodlara sahiptir.
String sql = "INSERT INTO kisiler(firstName, lastName) VALUES(?, ?)"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, "Emin"); preparedStatement.setString(2, "YILDIZ");
-
Değerler atandıktan sonra komut türüne göre execute, executeUpdate veya executeQuery metodları kullanılır.
-
Saklı yordam metodlarını veritabanına göndermek için çeşitli metodlar tanımlar.
-
Saklı yordam => VTYS içerisinde önceden derlenmiş SQL komutlarıdır.
CallableStatement callableStatement = connection.prepareCall("{ CALL SP_KISI_EKLE(? , ?)}"); callableStatement.setString(1, "Emin"); callableStatement.setString(2, "YILDIZ"); callableStatement.executeUpdate();
-
Saklı yordam çalıştırıldıktan sonra OUT ile işaretlenen parametreleri almak için paremetre registerOutParameter metodu ile belirtilmelidir.
callableStatement.registerOutParameter(1, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(2, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(3, java.sql.Types.DATE);
-
Parametreler belirtildikten sonra getVeriTipi metotları ile değer alınır.
callableStatement.getString(1);
callableStatement.getString(2);
callableStatement.getDate(3);
-
Sorgu sonrası veri listelemek için kullanılır.
-
next(), first(), last(), previous(), metodları kullanılarak verileri arasında gezinebiliriz.
Verileri alalım
ResultSet result = statement.executeQuery("SELECT * FROM kisiler");
Verileri görüntülemek için
while (result.next()) { sira = result.getInt(1); adi = result.getString(2); soyadi = result.getString("kisi_soyadi"); System.out.println(sira + " " + adi + " " + soyadi); }