"Enter"a basıp içeriğe geçin

Android Studio Veritabanı İçin Sınıf Ve Ayarlar Ders #1

Hep beraber yeni bir seriye başlıyoruz. Benimde Android Studio’ya yeni başlamamla birlikte öğrendiğim bilgileri burada paylaşmaya çalışacağım. Tasarımla ilgili pek bilgi vermeyi planlamıyorum. Ek bir bilgi yoksa sadece resim atıp id yazılarını verip geçebilirim. Bu yazıda görsel bir bilgi olmayacak gerçi. Veritabanı sınıfı içerisinde olması gereken sınıflardan ve olmazsa olmaz, yazılması gereken kodlar ile devam edeceğim.

Anlatıma geçecek olursak öncelikle MainActivity.java’nın bulunduğu klasöre bir tane daha sınıf oluşturulacak. Sağ tık -> New -> Java Class tıklayıp adını Veritabani yazalım.

Karşımıza bomboş bir sayfa gelecek. Bizim bunu Veritabanı özellikleri taşıyan bir sınıfa çevirmemiz gerek. Bunun için ilk başta public class Veritabani sınıfına SQLiteOpenHelper’ın extend edilmesi gerekiyor. Bunu ise şöyle yapıyoruz: public class Veritabani extends SQLiteOpenHelper böylelikle veritabanı özelliklerini kullanmaya başlayabiliriz.

 

SQLiteOpenHelper’ın bizden bir şeyler yapmamızı beklediğini görüyoruz. İki tane metot ve bir tane yapıcı metot bekliyor. SQLiteOpenHelper yazısının üstünde Alt+Enter tuşlarına basarak implement methods seçeneğinden onUpgrade, onCreate ve Alt+insert -> Constructor seçeneğinden de en üsttekini ekleyin.

 

Eklediğimiz metotların içerisine şimdilik ellemeyelim. Bu metotların içerisinde kullanacağımız bazı değişkenlere ihtiyacımız var. Veritabanı adı, versiyonu, kullanacağımız tablonun adı ve sütunları sabit değişkenlerle belirtelim.

private static final String DATABASE_NAME = “Ajanda”;
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME =”AjandaTablo”;

Şimdi ise sütunların adlarını belirleyelim.

private static final String ROW_ID = "ID";
private static final String ROW_AD = "AD";
private static final String ROW_SOYAD = "SOYAD";

Şeklinde istediğiniz gibi sütun adı verebilirsiniz. Sıra geldi bu sabitleri metotların içerisinde kullanmaya.  Parantez içinde sadece Context context kalacak şekilde diğer parametreleri temizleyelim. Buralar hep ezber ve her seferinde aynı işlemleri yapacağınız için pek anlatıma gerek yok. Yazılardan bile anlayabilirsiniz zaten.

public Veritabani(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

Şimdi ise tablomuzu oluşturalım. Bu metotta kullanılacak execSQL, içerisine yazdığımız SQL kodunu çalıştırmaya yarıyor. Böylelikle bir tablo oluşturuyor. ROW_ID sütununu integer yani sayısal bir değer yapıp primary key olarak ayarlayarak da verilerin karmaşasını engellemiş oluyoruz. ID her kayıtta farklı olacağı için ileride yazacağımız, mesela veri silme örneklerinde id değerine ulaşıp silme işlemi kolayca yapılabilecek. TEXT ise ROW_AD içine girilen verilerin metinsel olacağını, NOT NULL ise boş veri girilemeyeceğini belirtiyor.

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE "+AJANDA_TABLE+" ("+ROW_ID+" INTEGER PRIMARY KEY, "+ROW_AD+" TEXT NOT NULL, "+ROW_SOYAD+" TEXT NOT NULL)");
}

onUpgrade metodunda ise veritabanı içerisinde bir değişiklik olduğu zaman, bu değişikliği uygulamamızı sağlıyor. Var olan veritabanı tablosunu siliyor ve yenilenmiş haliyle birlikte onCreate içerisine parametre göndererek tekrardan oluşmasını sağlıyor.

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   db.execSQL("DROP TABLE IF EXISTS "+AJANDA_TABLE);
   onCreate(db);
}

Buralar her zaman sabit olduğu için SQL kodları ile hızlı hızlı halledilmiş oldu. SQLite’ın dile bağımsızlığı sayesinde sql kodu bilme zorunluluğunu büyük ölçüde azaltmış oluyoruz.

Yazdığımız bütün kodlar ise şöyle:

package com.example.osman.myapplication;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Veritabani extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "Ajanda";
    private static final int DATABASE_VERSION = 1;
    private static final String AJANDA_TABLE = "AjandaTablo";


    private static final String ROW_ID = "ID";
    private static final String ROW_AD = "AD";
    private static final String ROW_SOYAD = "SOYAD";

    public Veritabani(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE "+AJANDA_TABLE+" ("+ROW_ID+" INTEGER PRIMARY KEY, "+ROW_AD+" TEXT NOT NULL, "+ROW_SOYAD+" TEXT NOT NULL)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+AJANDA_TABLE);
        onCreate(db);
    }
}

Bu yazıyı beğendiyseniz ve aklınıza takılan bir yer olduysa yorumlardan belirtmeniz halinde yardımcı olmaya çalışacağım. Okuduğunuz için teşekkürler.

2 Yorum

  1. Gulchemen
    Gulchemen 18/01/2022

    Merhaba bu kadarmi devami yokmu

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.