hakantopuzoglu
- 25 May 2018
- 2,235 Mesaj
- TIM Görevleri
- 1
Aktiflik
Seviye
Deneyim
Java’da JDBC Kullanımı ve MySQL Veritabanı İşlemleri
Bugün sizlere Java geliştiricilerinin en temel ve en önemli konularından biri olan **JDBC (Java Database Connectivity)** ile **MySQL** veritabanı işlemlerini detaylı ve pratik bir şekilde anlatacağım. Özellikle backend, masaüstü uygulama ve Android ile Java kullanan arkadaşlar için vazgeçilmez bir konudur.
Bu paylaşımda sıfırdan bağlantı kurmaktan, CRUD işlemlerine, PreparedStatement kullanımına, transaction yönetimine kadar her şeyi ele alacağız.
1. Gereksinimler
2. Proje Kurulumu
1. Yeni bir Java Projesi oluşturun.
2. İndirdiğiniz `mysql-connector-j-x.x.xx.jar` dosyasını projenize ekleyin (Build Path → Libraries → Add External JARs).
3. MySQL’de test veritabanı ve tablo oluşturun:
```sql
CREATE DATABASE okul_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE okul_db;
CREATE TABLE ogrenci (
id INT AUTO_INCREMENT PRIMARY KEY,
ad_soyad VARCHAR(100) NOT NULL,
yas INT,
bolum VARCHAR(50),
kayit_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
[/code]
3. JDBC Bağlantısı (Connection)
**Not:** `useSSL=false&serverTimezone=UTC` parametreleri yeni MySQL sürümlerinde hata almamak için önemlidir.
4. CRUD İşlemleri
**C - Create (Kayıt Ekleme) - PreparedStatement**
**R - Read (Veri Okuma)**
**U - Update ve D - Delete** işlemlerini de aynı mantıkla yapabilirsiniz.
5. Transaction Yönetimi (Önemli!)
6. En İyi Uygulamalar ve Dikkat Edilecekler
Herkese Merhaba,Bugün sizlere Java geliştiricilerinin en temel ve en önemli konularından biri olan **JDBC (Java Database Connectivity)** ile **MySQL** veritabanı işlemlerini detaylı ve pratik bir şekilde anlatacağım. Özellikle backend, masaüstü uygulama ve Android ile Java kullanan arkadaşlar için vazgeçilmez bir konudur.
Bu paylaşımda sıfırdan bağlantı kurmaktan, CRUD işlemlerine, PreparedStatement kullanımına, transaction yönetimine kadar her şeyi ele alacağız.
1. Gereksinimler
- Java JDK (8 veya üstü önerilir)
- MySQL Server (8.0+)
- MySQL Connector/J (JDBC Driver) → [dev.mysql.com/downloads/connector/j/](https://dev.mysql.com/downloads/connector/j/)
- IDE (IntelliJ IDEA veya Eclipse)
2. Proje Kurulumu
1. Yeni bir Java Projesi oluşturun.
2. İndirdiğiniz `mysql-connector-j-x.x.xx.jar` dosyasını projenize ekleyin (Build Path → Libraries → Add External JARs).
3. MySQL’de test veritabanı ve tablo oluşturun:
```sql
CREATE DATABASE okul_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE okul_db;
CREATE TABLE ogrenci (
id INT AUTO_INCREMENT PRIMARY KEY,
ad_soyad VARCHAR(100) NOT NULL,
yas INT,
bolum VARCHAR(50),
kayit_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
[/code]
3. JDBC Bağlantısı (Connection)
Kod:
import java.sql.*;
public class JdbcOrnek {
private static final String URL = "jdbc:mysql://localhost:3306/okul_db?useSSL=false&serverTimezone=UTC";
private static final String KULLANICI = "root";
private static final String SIFRE = "sifreniz";
public static Connection baglan() throws SQLException {
return DriverManager.getConnection(URL, KULLANICI, SIFRE);
}
}
**Not:** `useSSL=false&serverTimezone=UTC` parametreleri yeni MySQL sürümlerinde hata almamak için önemlidir.
4. CRUD İşlemleri
**C - Create (Kayıt Ekleme) - PreparedStatement**
Kod:
public static void ogrenciEkle(String adSoyad, int yas, String bolum) {
String sql = "INSERT INTO ogrenci (ad_soyad, yas, bolum) VALUES (?, ?, ?)";
try (Connection conn = baglan();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, adSoyad);
pstmt.setInt(2, yas);
pstmt.setString(3, bolum);
int etkilenen = pstmt.executeUpdate();
System.out.println(etkilenen + " kayıt eklendi.");
} catch (SQLException e) {
e.printStackTrace();
}
}
**R - Read (Veri Okuma)**
Kod:
public static void ogrencileriListele() {
String sql = "SELECT * FROM ogrenci";
try (Connection conn = baglan();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
System.out.println("ID\tAd Soyad\tYaş\tBölüm\tKayıt Tarihi");
System.out.println("---------------------------------------------------");
while (rs.next()) {
System.out.printf("%d\t%s\t%d\t%s\t%s%n",
rs.getInt("id"),
rs.getString("ad_soyad"),
rs.getInt("yas"),
rs.getString("bolum"),
rs.getTimestamp("kayit_tarihi"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
**U - Update ve D - Delete** işlemlerini de aynı mantıkla yapabilirsiniz.
5. Transaction Yönetimi (Önemli!)
Kod:
public static void transactionOrnegi() {
String sql1 = "INSERT INTO ogrenci (ad_soyad, yas, bolum) VALUES (?, ?, ?)";
// String sql2 = ...
try (Connection conn = baglan()) {
conn.setAutoCommit(false);
try (PreparedStatement pstmt1 = conn.prepareStatement(sql1)) {
// İşlemler...
pstmt1.executeUpdate();
conn.commit();
System.out.println("Transaction başarılı.");
} catch (SQLException e) {
conn.rollback();
System.out.println("Transaction geri alındı.");
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
6. En İyi Uygulamalar ve Dikkat Edilecekler
- Her zaman **PreparedStatement** kullanın (SQL Injection koruması)
- Try-with-resources ile otomatik kapatın (Java 7+)
- Gerçek projelerde Connection Pool (HikariCP vb.) kullanın
- Hata yönetimini ihmal etmeyin
- serverTimezone parametresini unutmayın
LOJİSTİK TİM SUNDU

