Android Programlama -43 SQLite DbHelper

Merhaba arkadaşlar bu gün ki makalemde SQLite database’ine giriş yapacağız.

önceki makalelerime buradan ulaşabilirsiniz.

SQLite database’i  kullanıcının kendi local’ inde  verilerin depolanmasını sağlar. Daha önceki makalelerde gördüğümüz firebase database’i verileri cloudda saklayan bir database’di. Firebase de depolanan verilere bütün kullanıcılar erişebilir ve uygulama sahipleri kullanıcının girmiş olduğu verileri görüntüleyip kontrol edebilir. SQLite da ise veriler kullanıcı localinde depolanır ve uzaktan müdahale söz konusu değildir. Uygulama verileri depolamak için telefonun hafızasını kullanır.

Uygulama içerisinde SQLite’ ı kullanabilmek için 3 tane temel class’ları oluşturmak gerekmektedir. Bunlar;

  1. DbHelper.java
  2. Contract.java
  3. Provider.java

Bu classları doğru bir şekilde tanımladıktan sonra insert,delete,update gibi işlemleri çok kolay ve sağlıklı bir şekilde yapabilirsiniz. Örnek DbHelper classı aşağıdaki gibidir.

package com.example.user.finalyproject.DataBase;

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

public class DbHelper extends SQLiteOpenHelper {

public static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "store.db";


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

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String SQL_CREATE_PRODUCTS_TABLE = "CREATE TABLE " + ProductContract.ProductEntry.TABLE_NAME + " ("
+ ProductContract.ProductEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ ProductContract.ProductEntry.COLUMN_PRODUCT_NAME + " INTEGER NOT NULL, "
+ ProductContract.ProductEntry.COLUMN_PRODUCT_PRICE + " TEXT NOT NULL, "
+ ProductContract.ProductEntry.COLUMN_PRODUCT_QUANTITY + " TEXT , "
+ ProductContract.ProductEntry.COLUMN_SUPPLIER_NAME + " TEXT, "
+ ProductContract.ProductEntry.COLUMN_PRODUCT_IMAGE + " TEXT ,"
+ ProductContract.ProductEntry.COLUMN_SUPPLIER_EMAIL + " INTEGER, "
+ ProductContract.ProductEntry.COLUMN_SUPPLIER_PHONE + " TEXT);";
sqLiteDatabase.execSQL(SQL_CREATE_PRODUCTS_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

}
}

Bu class da kullanacağımız tablonun create scriptini oluşturuyoruz. Tabloda olmasını istediğimiz kolonların isimlerini tek tek yazıp o kolonda hangi veri tipide veri saklanmasını istiyorsak  onu belirtiyoruz. Ayrıca kolonlar null geçilmeyecekse, default bir değere sahipse gibi özellikleri de bu class da tanımlıyoruz. Primary key olan kolonu  PRIMARY KEY söz dizimi ile oluşturup otomatik olarak değerinin artmasını istiyorsak AUTOINCREMENT söz dizimi nide ekliyoruz koda.

Bir makalenin daha sonuna geldik, esenle kalın..

Kübra Hebeş

Bilgisayar Mühendisi