JDBC nedir ?
Published: 2024-06-14 13:55:21

JDBC (Java Database Connectivity), Java programlama dili ile yazılmış uygulamaların ilişkisel veritabanları ile etkileşimde bulunmasını sağlayan bir API'dir. JDBC, Java uygulamaları ile veritabanları arasında bir köprü görevi görerek SQL sorgularını çalıştırmayı, veritabanı bağlantılarını yönetmeyi ve sonuçları işlemeyi mümkün kılar. JDBC, Java Standard Edition (Java SE) platformunun bir parçasıdır.

### JDBC'nin Temel Bileşenleri

1. **JDBC Sürücü (Driver)**: JDBC sürücüsü, Java uygulaması ile belirli bir veritabanı arasında iletişimi sağlayan yazılımdır. Farklı veritabanları için farklı JDBC sürücüleri bulunmaktadır (örneğin, MySQL, PostgreSQL, Oracle, vb. için farklı sürücüler).

2. **Connection**: Veritabanı ile bağlantıyı temsil eder. Bağlantı oluşturmak için gerekli bilgiler (URL, kullanıcı adı, parola) kullanılır.

3. **Statement**: SQL sorgularını çalıştırmak için kullanılır. `Statement`, `PreparedStatement` ve `CallableStatement` olmak üzere üç ana türü vardır:
   - **Statement**: Basit SQL sorguları için kullanılır.
   - **PreparedStatement**: Parametreli SQL sorguları için kullanılır. SQL enjeksiyon saldırılarına karşı daha güvenlidir.
   - **CallableStatement**: Saklı prosedürleri çalıştırmak için kullanılır.

4. **ResultSet**: SQL sorgularının sonuçlarını temsil eder. Veritabanından dönen veri kümesi bu nesne ile işlenir.

### JDBC Kullanarak Veritabanı İşlemleri

Aşağıda, JDBC kullanarak bir veritabanına bağlanma, veri ekleme, veri sorgulama ve bağlantıyı kapatma işlemlerinin nasıl yapıldığını gösteren bir örnek bulunmaktadır.

#### Gerekli Importlar

```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
```

#### JDBC Kullanarak Veritabanına Bağlanma ve Veri İşleme

```java
public class JDBCDemo {

    // Veritabanı bağlantı bilgileri
    static final String DB_URL = "jdbc:mysql://localhost:3306/your_database_name";
    static final String USER = "your_username";
    static final String PASS = "your_password";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;

        try {
            // JDBC sürücüsünü yükle
            Class.forName("com.mysql.cj.jdbc.Driver");

            // Veritabanına bağlan
            System.out.println("Veritabanına bağlanılıyor...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            // Statement oluştur
            stmt = conn.createStatement();

            // Veri ekleme (INSERT) örneği
            String sql = "INSERT INTO Employees (name, age, department) VALUES ('John Doe', 30, 'HR')";
            stmt.executeUpdate(sql);
            System.out.println("Veri eklendi...");

            // Veri sorgulama (SELECT) örneği
            sql = "SELECT id, name, age, department FROM Employees";
            ResultSet rs = stmt.executeQuery(sql);

            // Sonuçları işleme
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                String department = rs.getString("department");

                // Veriyi ekrana yazdır
                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age + ", Department: " + department);
            }

            // ResultSet'i kapat
            rs.close();
        } catch (SQLException se) {
            // JDBC hatalarını işle
            se.printStackTrace();
        } catch (Exception e) {
            // Genel hataları işle
            e.printStackTrace();
        } finally {
            // Kaynakları kapat
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se2) {
            }
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
        System.out.println("İşlem tamamlandı...");
    }
}
```

### JDBC Adımları

1. **Sürücüyü Yükle**: `Class.forName("com.mysql.cj.jdbc.Driver");`
2. **Bağlantıyı Oluştur**: `conn = DriverManager.getConnection(DB_URL, USER, PASS);`
3. **Statement Oluştur**: `stmt = conn.createStatement();`
4. **SQL Sorgusu Çalıştır**: `stmt.executeUpdate(sql);` veya `stmt.executeQuery(sql);`
5. **Sonuçları İşle**: `ResultSet rs = stmt.executeQuery(sql);`
6. **Kaynakları Kapat**: `rs.close();`, `stmt.close();`, `conn.close();`

Bu temel adımlarla JDBC kullanarak bir veritabanına bağlanabilir, veri ekleyebilir, sorgu çalıştırabilir ve sonuçları işleyebilirsiniz.