Android Sqlite İle Veritabanı İşlemleri

İyi günler bugün Android telefonlarda local veritabanı oluşturmak için kullandığımız Sqlite veritabanına bakacağız.Veritabanına ekleme,silme güncelleme ve listeleme işlemleri yapacağız.Sqlite ile cihaz içinde veritabanı oluşturabilirsiniz.Oluşturduğunuz veritabanına istediğiniz kayıtları girebilir ve normal veritabanı işlemleri yapabilirsiniz.Hem verileriniz tablolar halinde düzenli bir şekilde durur hem de neyin nerde olduğunu bilirsiniz.

Verileri Android işletim sisteminde iki türlü tutabilirsiniz.Birincisi Sqlite veritabanını kullanarak tablolar halinde,ikincisi ise anahtar-key şeklinde saklayabileceğiniz Shared Preferences ile tutabilirsiniz.Eğer tutacağınız veriler basit veriler ise örneğin sadece birkaç ayarı tutmak istiyorsanız Shared Preferences uygun olacaktır.Fakat çoklu veri tutacaksınız Sqlite veritabanı ile tutulması daha iyi olacaktır.

Sqlite veritabanında verileri tutmak için kullanıcıdan herhangi özel bir izin almanıza gerek yoktur.

Öncelikle yardımcı bir sınıf oluşturmamız gerekmektedir(DbHelper).Yardımcı sınıf bize başka yerlerde de kullanmak için avantaj sağlamaktadır.Yardımcı sınıfı sadece sqlite için değil istediğiniz zaman oluşturup kullanabilirsiniz.

Yardımcı sınıfı oluşturuyoruz ve oluşturduğumuz yardımcı sınıf SQLiteOpenHelper sınıfından extends edilmesi gerekmektedir.Yani kalıtım yapılması gerekmektedir.Kalıtım yaptığımız zaman SQLiteOpenHelper sınıfı içinde ki değişkenleri yeniden tanımlamadan kullanabilmekteyiz.

public class DbHelper extends SQLiteOpenHelper{}

Kalıtım ifadesini yazdığımız zaman Android Studio bize uyarı verecektir.Çünkü SQLiteOpenHelper sınıfının bazı metodları implement etmemizi istemektedir.İmplement yaparak SQLiteOpenHelper sınıfında ki metodları yardımcı sınıfımız olan DbHelper sınıfına aktarıyoruz.

2 adet metodu implement ettik ve bir adette yapıcı metod oluşturduk.

public DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

onCreate metodunda veritabanımızı oluşturuyoruz.

onUpgrade metodunda veritabanımızı yükselttiğimiz zaman yeniden oluşturulması sağlanıyor.

SQLiteDatabase sınıfından bir nesne oluşturuyoruz.Oluşturduğumuz bu nesne ile veritabanı işlemleri yapacağız.

SQLiteDatabase database;

Daha sonra ise yapıcı metodun içerisinde oluşturduğumuz nesnesinin yazdırılabilir olduğunu belirtiriyoruz.Ön tanımlı olarak gelen yapıcı metodu kullanmayabiliriz.Yapıcı metod içinde sadece context ifadesi kalabilir.Sınıfı oluştururken sadece contex’i belirtip oluşturabiliriz.

public DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
    super(context, name, factory, version);
    database=this.getWritableDatabase();
}
public DbHelper(Context context) {
    super(context, dbName, null, version);
    database=this.getWritableDatabase();
}

Veritabanımızın bilgilerini ve kolonlarını yukarda global olarak tanımlıyoruz.Farklı yerlerde kullanacağımız için global değişkenler tanımlamak her zaman daha iyidir.

public static String dbName="database";
private static String tableName="info_table";
private static int version=1;
private static String col_1="id";
private static String col_2="name";
private static String col_3="surname";

onCreate metodu içerisinde veritabanımızı oluşturmamız gerekiyor.Bunun içinde execSQL() metodunu kullanıyoruz.execSQL() metodu ile sql cümlelerimiz çalıştırabiliriz.

db.execSQL("create table "+tableName+"("+col_1+" primary key autoincrement,"+col_2+" text not null,"+col_3+" text not null)");
@Override
public void onCreate(SQLiteDatabase db) {
    try {
        db.execSQL("create table "+tableName+"("+col_1+" primary key autoincrement,"+col_2+" text not null,"+col_3+" text not null)");
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

onUpgrade metodu içerisinde ise veritabanını drop edip yeniden oluşturmamız gerekiyor.

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("drop table if exists "+tableName);
    onCreate(db);
}
Sqlite Veri Ekleme

Sqlite veritabanına iki yolla veri ekleyebiliriz.Ya direk sql cümlesi yazıp ya da ContentValues ile anahtar key şeklinde ekleme yapabiliriz.Verileri eklerken insert metodundan yararlanabiliriz veya direk sql cümlesini yazıp execSQL() metodu ile çalıştırabiliriz.

long result;
public boolean insertData(String name,String surname)
{
    database=this.getWritableDatabase();
    ContentValues contentValues=new ContentValues();
    contentValues.put(col_2,name);
    contentValues.put(col_3,surname);
    result=database.insert(tableName,null,contentValues);
    if (result==0)
        return false;
    else
        return true;
    database.close();
}
public boolean insertData(String name,String surname)
{
    database=this.getWritableDatabase();
    String insertQuery="insert into "+tableName+"("+col_2+","+col_3+") values("+name+","+surname+")";
    database.execSQL(insertQuery);
    database.close();
    return true;
}
Sqlite Veri Silme

Veril silerken delete() metodunu kullandım.Delete metodunda ilk parametre tablo ismi,ikinci parametre where şartı yani kaydın hangi alana göre silineceği,üçüncü parametre ise where şartına göre vereceğimiz değerleri string array olarak almaktadır.

public Integer deleteData(String name)
{
    database=this.getWritableDatabase();
    return database.delete(tableName,"name=?",new String[]{name});
}
Sqlite Veri Güncelleme
public Integer updateData(String name)
{
    database=this.getWritableDatabase();
    ContentValues contentValues=new ContentValues();
    contentValues.put(col_2,name);
    return database.update(tableName,contentValues,"name=?",new String[]{name});
}
Sqlite Verileri Listeleme

Öncelikle bir adet veri ekleyelim.InsertData() adından bir metod oluşturdum ve kaydın veritabanına eklenmesini sağladım.Activity’nin içinde metod çağrıldığı zaman veri eklenmiş olacaktır.

void InsertData()
{
    DbHelper dbHelper=new DbHelper(this);
    if (dbHelper.insertData("fatih","demirağ"))
        Toast.makeText(this, "record inserted", Toast.LENGTH_SHORT).show();
    else
        Toast.makeText(this, "record not inserted", Toast.LENGTH_SHORT).show();
}

Verileri Cursor ile listeleyeceğiz.Cursor veriler arasında gezinmemizi sağlar.Verileri listeleyecek olduğumuz zaman Cursor kullanılırız.DbHelper sınıfımızın içinde getData() adında cursor tipi döndüren bir metod oluşturuyoruz.Sql cümlesi ile de kayıtları alıyoruz.

public Cursor getData()
{
    database=this.getWritableDatabase();
    Cursor cursor=database.rawQuery("select * from "+tableName+"",null);
    return cursor;
}

 

 

 

 

 

 

Yukarı Çık
Size nasıl yardımcı olabilirim ?