Java ile MySQL veritabani islemleri

Java ile veritabani islemleri yapabilmek için veritabani ile java baglantilarini yapmak gerekir. Daha sonra ihtiyaca göre ekleme silme ve güncelleme islemlerinen herhangi birisi yapilabilir. Insert, delete, update ve select islemlerini yapmayi bu dersin sonunda ögrenmis olacagiz.

Yazdigimiz sql kodlarina göre yapmak istedigimiz islemleri yapabiliriz. Bu makalemde java ve maysql baglantisini kurmayi ve gerekli diger islemleri yapmayi anlatacagim.

Ilk olarak projemize kütüphane eklememiz gerekiyor. Kütüphane ekle diyoruz, daha sonra MySQL JDBC sürücüsünü Seçip Kütüphane ekle butonuna tiklayip kütüphanemizi ekliyoruz.
Kullanacagimiz veritabani mysql oldugundan seçecegimiz kütüphaneyi buna göre belirliyoruz.

public class DataBase {
    private Connection con;
    private final String URL;
    private final String KULID;
    private final String SIFRE;

    public DataBase(){
        this.URL = "jdbc:mysql://localhost:3306/bilgi";
        this.KULID = "root";
        this.SIFRE = "";
    }

 

DataBase classimizi olusturduk ve degiskenlerimizi tanimladik! Bos yapilandiricida url degiskenine sql adresimizi kulid ye sql serverdeki kullanici adimizi sifreye de eger sifre koymussak onu yaziyoruz. 

  private void baglan() throws SQLException, ClassNotFoundException{
        if(con !=  null)
            if( !con.isClosed())
                return;

        Class.forName("com.mysql.jdbc.Driver");
        con = (Connection) DriverManager.getConnection(URL, KULID, SIFRE);
    }

Baglan() metodumuzda ilk once baglantiyi kontrol ediyoruz.Eger daha önce baglanti olusturulmussa return ile metoddan çikariyoruz.Eger baglanti yok ise yeni bir baglanti kuruyoruz! 
 Class.forName();  dinamik olarak yüklenecek sinifin belirliyoruz.Yani  com paketinin içindeki mysql paketinin içindeki jdbc paketinin içindeki Driver classini çalisma zamaninda çalistiriyoruz. 
con = (Connection ) …………… satirinda ise baglantimizi kuruyoruz.

   private void kapat(PreparedStatement prepared, ResultSet result) throws SQLException {
        if(prepared != null)
            prepared.close();
        if(result != null)
            prepared.close();
        if(con != null)
            con.close();
    }

Kapat fonksiyonumuz iki parametre aliyor.Bu parametreler Daha sonra anlatacagim. Eger burada ki parametrelerimiz null degilse kapatilabilir ve kapatiyoruz!

public boolean ogrenciEkle(String ad, String soyad, String no) throws SQLException, ClassNotFoundException{
        baglan();

        String sql = "INSERT INTO ogrencibilgiler VALUES (?, ?, ?)";

        PreparedStatement prepared = (PreparedStatement) con.prepareStatement(sql);

        prepared.setString(1, ad);
        prepared.setString(2, soyad);
        prepared.setString(3,no);

        int sonuc = prepared.executeUpdate();

        kapat(prepared, null);

        return (sonuc > 0);
       
    }

Bu metod  ogrenci eklenip eklenmeme durumuna gore geriye true ya da false degeri dondermektedir!
Ogrenci bilgileri nesnesi parametre olarak bilgiler  getirilmektedir!
Baglan komutu ile veri tabanina baglaniyoruz!

Insert veri tabanina bilgi eklemeye yarayan sql komutudur. Biz ogrenci bilgileri tablosuna ekleyecegiz bilgilerimizi

PreparedStatement nesnesi bize sql kodumuzdaki soru isareti yerine gerçek degerleri atamamizi saglar.set metodlari ile ekeleyecegimiz nesneleri belirliyoruz (setString(), setInt() … gibi). executeUpdate() metodu ise bize islem yapilan  satir sayisini gönderir.Eger verimiz eklenmisse bize 1 degeri döner eger herhangi bir islem yapilmamis ise 0..

Return (sonuc > 0) sarti dogru ise yani herhangi bir satir atlanmissa true degeri donderir.Diger durumda false..

public void ogrenciListele() throws SQLException, ClassNotFoundException{
        baglan();

        String sql = "SELECT * FROM ogrencibilgiler";

        PreparedStatement prepared = (PreparedStatement) con.prepareStatement(sql);

        ResultSet result = prepared.executeQuery();

        while(result.next()){
           System.out.println(result.getString("AD"));
           System.out.println(result.getString("SOYAD"));
           System.out.println(result.getString("NO"));
        }

        kapat(prepared, result);

    }

 

Burada farkli yerleri anlatacagim sadece.SELECT listeleme için kullanilan bir sql kodudur . * ise ogrencibilgiler tablosundaki butun kolonlari temsil etmektedir eger istedigimiz bilgileri çekeceksek * yerine örn; (SELECT ogrenciadi, ogrencisoyadi FROM ogrencibilgiler) diyebililriz.

Resultset ise elde edilen sonuclarin uzerinde dolasmayi saglar. Next() metodu satirlarda ilerliyoruz.get metodlari ile kolonlardaki bilgileri çekiyoruz.
Daha sonra geriye listemizi gönderiyoruz!

public boolean  guncelle() throws SQLException, ClassNotFoundException{
        baglan();

        String Sql = "UPDATE ogrencibilgiler SET AD = ?, SOYAD = ? WHERE NO = ?";

        PreparedStatement prepared = (PreparedStatement) con.prepareStatement(Sql);

        prepared.setString(1, "ahmet");
        prepared.setString(2, "mehmet");
        prepared.setInt(3, 31);

        int sonuc = prepared.executeUpdate();

        kapat(prepared, null);

        return(sonuc > 0);
    }

Yine guncelleyip guncellememe durumuna göre geriye true yada false degerler dönderiyoruz. UPDATE sql de guncellemek için kullanilir ‘ogrenci bilgiler’ tablo adimiz ve ogrenci ad ve ogrencisoyad guncelleyecegimiz kolonlara karsisil geliyor.’where ’ anahtar sözcügü sql de arama islemi yapan bir syntaxtir. Biz ogrenci no kolonunda arama yapacagimiz için where anahtar kelimesinden sonra belirttik.

Prepared yine Stringteki soru isaretlerine gerçek degerleri koydu.ve sonuc degiskeninde satir  atlatildigini tutuyoruz eger satir atlanmis yani guncelleme yapilmis ise geriye true aksi durumda false donderiyoruz.

public boolean sil(String no) throws SQLException, ClassNotFoundException{
        baglan();

        String sql = "DELETE FROM ogrencibilgiler WHERE NO = ?";
        PreparedStatement prepared = (PreparedStatement) con.prepareStatement(sql);
        prepared.setString(1, no);
        int sonuc = prepared.executeUpdate();
        kapat(prepared, null);
        return (sonuc > 0);
    }

Delete sql de silmeyi saglar .Biz ogrenci no suna göre silecegimiz için onu da belirtiyoruz. Yine prepared ile soru isaretinin yerine degeri koyduk.Eger silinme islemi yapildiysa sonuc olarak 1 dönüyor ve geriye true degeri dönderiyoruz…

Abdullah Büyüktanir.

Tags:

One thought on “Java ile MySQL veritabani islemleri

  • Hocam iyi günler.Sizin çaly?manyzy sadece netbeans de run ederek msql olmadan nasyl yapabilirim?Size tekrardan iyi günler dilerim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir