Java’da Veritabanı İşlemleri

Gökhan YAVAŞ
gokhanyavas
Published in
4 min readApr 24, 2017

Merhaba,

Bu yazıda, Java Programlama dilini kullanarak veritabanında işlemler yapıyor olacağız. Java’da veritabanı işlemleri için JDBC isminde bir API kullanılmaktadır. JDBC, Java Database Connectivity cümlesinin kısaltılmış halidir.

JDBC Mimarisi

2 katmana ayrılır.

  1. JDBC API: Uygulama ve veritabanı arasında bağlantı sağlar.
  2. JDBC Driver API: Uygulama ve kullanılan veritabanı sürücü bağlantısını destekler. Aşağıdaki diyagram bu yapının yerini göstermektedir.
  3. [caption id=”” align=”alignnone” width=”400"]
  1. kaynak: www.tutorialspoint.com[/caption]

JDBC Bileşenleri

DriverManager: Bu sınıf, veritabanı sürücülerinin listesini yönetir.

Driver: Bu interface, veritabanı ile iletişimi ele alır.

Connection: Bu interface, bütün metotları ile veritabanına irtibat kurmak için kullanılır.

Statement: SQL ifadelerini veritabanına göndermek için bu interface’ten oluşturulan nesneler kullanılır.

ResultSet: Statements nesnelerini kullanarak SQL sorgusunu çalıştırdıktan sonra veritabanından alınan verileri tutmak için bu nesneler kullanılır. Onu taşımanıza izin veren bir yineleyici görevi görür.

SQLException: Bu sınıf, bir veritabanı uygulamasında ortaya çıkan hataları ele alır.

JDBC Uygulaması Oluşturma

Uygulama oluşturmaya başlamadan önce SQL konusunda bilginizin olması gerekmekte. Daha önceki yazılarımda SQL konusunu detaylı incelediğim için bu yazıda detaya girmeyeceğim. Bu yazılara SQL kategorisini kullanarak ulaşabilirsiniz.

Uygulamanızda hangi veritabanını kullanacaksanız o veritabanına ait JDBC Driver’ı indirmeniz gerekmektedir. Oracle veritabanı için buradan, MySQL için buradan ve MSSQL için buradan ulaşıp indirebilirsiniz.

Bu indirme işleminden sonra Jar dosyasını src klasörünün içine bırakın. İlgili jar uzantılı dosyaya sağ tıklayın Build Path — Add to Build Path yolunu izleyin. Bu işlem ile veritabanına bağlantıyı bir nebze hazırlamış olduk. JDBC uygulaması oluşturulurken aşağıdaki adımlar izlenir:

  • import java.sql.* paketinin içe aktarılması.
  • Sürücüleri kaydetme.
  • Bağlantı açma. Veritabanı ile fiziksel bağlantı sağlayan ve Connection nesnesini oluşturan DriverManager.getConnection() metodu gerekmekte.
  • Sorgu çalıştırma. Veritabanına SQL ifadesi göndermek için, Statement türünde bir nesne gerekmekte.
  • SQL cümlesine göre veri işlemi.
  • Kullanılan kaynağı kapatmak.

Veritabanından Veri Okumak

Bu örnek ile veritabanından nasıl verileri okuyabileceğimizi öğrenmiş olacağız.

import java.sql.*;public class Select {// JDBC driver ve Veritabanı URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/KISILER";
// Veritabanı kullanıcı adı ve şifresi
static final String USER = "username";
static final String PASS = "password";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
Class.forName("com.mysql.jdbc.Driver");// Baglantı acılır.
System.out.println("Veritabanina baglaniliyor...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("Baglanti basarili...");
// Sorgular calıstırlır.
System.out.println("Deyim oluşturuluyor...");
stmt = conn.createStatement();
String sql = "SELECT id, adi, soyadi, yasi FROM Isımler";
ResultSet rs = stmt.executeQuery(sql);
// Veriler ayıklanır.
while(rs.next()){
// Sutunlara göre degerlerı alıyoruz
int id = rs.getInt("id");
int yas = rs.getInt("yasi");
String adi = rs.getString("adi");
String soyadi = rs.getString("soyadi");
// Verileri görüntüle - yaz
System.out.print("ID: " + id);
System.out.print(", Yas: " + yas);
System.out.print(", Adı: " + adi);
System.out.println(", Soyadı: " + soyadi);
}
rs.close();
}catch(SQLException se){
se.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(stmt!=null)
conn.close();
}catch(SQLException se){
}
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
System.out.println("Gule gule!");
}
}
İlgili örneğimiz ile veritabanında kayıtlı olan veriler okunur.
Veritabanından Veri EklemekVeritabanındaki ilgili tablola/tablolara veriyi bu örnekteki gibi ekleyebiliriz.import java.sql.*;public class Insert {// JDBC driver ve Veritabanı URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/KISILER";
// Veritabanı kullanıcı adı ve şifresi
static final String USER = "username";
static final String PASS = "password";
public static void main(String[] args) {Connection conn = null; // Bağlantı
Statement stmt = null; //
try {
// JDBC driver kayit edilir
Class.forName("com.mysql.jdbc.Driver");
// Baglanti acilir.
System.out.println("Veritabanina baglaniliyor...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("Baglanti basarili...");
// Execute islemleri
System.out.println("Kayitlar tabloya eklenecek...");
stmt = conn.createStatement();
String sql = "INSERT INTO Isimler " +
"VALUES (1, 'Gokhan', 'Yavas', 28)";
stmt.executeUpdate(sql);
sql = "INSERT INTO Isimler " +
"VALUES (2, 'Gurkan', 'Yavas', 22)";
stmt.executeUpdate(sql);
System.out.println("Kayit ekleme basarili...");} catch (SQLException se) {
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (stmt != null)
conn.close();
} catch (SQLException se) {
}
try {
if (conn != null)
conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
}
}
Adımların her zaman aynı şekilde yapıldığı dikkatinizi çekmiş olmalı. Insert etme işlemide bu kadar kolay :) Diğer veritabanı işlemleri için buradaki anlatımları inceleyebilirsiniz.
PreparedStatement NesnesiPreparedStatement interface’i Statement interface’inden genişletilen size bir çift avantajla birlikte ek işlevsellik sağlayan genel bir Statement nesnesidir. Bu ifade, argümanları dinamik olarak temin ederken size bir esneklik kazandırır. JDBC de ki bütün parametreler, parametre işareti olarak bilinen ? ile gösterilir. SQL ifadesini çalıştırmadan önce, her parametre için değerleri tanımlamak gerekir. Her parametre işareti, kendisinin sıralı pozisyonu ile anılır. Birinci işaret pozisyon 1 ile, sıradaki pozisyon 2 ile ve benzeri. Bu metod sıfır ile başlayan Java dizi indeksinden farklıdır.Örnek:import java.sql.*;
public class Ps {
public static void main(String[] args) throws Exception {
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection con = DriverManager.getConnection (
"jdbc:derby://localhost:1527/testDb","name","pass");
PreparedStatement updateemp = con.prepareStatement(
"insert into emp values(?,?,?)");
updateemp.setInt(1,101);
updateemp.setString(2,"Gokhan");
updateemp.setString(3, "Developer");
updateemp.executeUpdate();
Statement stmt = con.createStatement();
String query = "select * from emp";
ResultSet rs = stmt.executeQuery(query);
System.out.println("Id Name Job");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String job = rs.getString("job");
System.out.println(id + " " + name+" "+job);
}
}
}
Kısaca Java'da veritabanı işlemlerini yapmak bu şekilde. Bu yazıda genel olarak bir veritabanına nasıl veri kaydedip, o verileri nasıl okuyup ve üzerinde değişikliklerin nasıl yapıldığını incelemiş olduk. Bundan sonrası sizin hayal gücünüze ve becerinize kalan bir şey. Kendinize iyi bakın ;)

--

--