Android Sqlite kullanımı

Android Sqlite kullanımı

Iyi günler arkadaşlar,

Bu gün android de Sqlite kullanımını öğreneceğiz.

Sqlite hakkındaki açıklamaya buradan ulaşabilirsiniz.

http://mhmdalmz.com/index.php/2017/04/12/android-veritabani-sqllite/

Haydi , bir rehber uygulaması tarzı birşeyler yapalım.

Öncelikle MyDatabase Diye bir Class tanımlayarak kodlarımızı yazmaya başlayalım.

MyDatabase class SqlLiteOpenHelper arayüzümüzden bir kalıtım yapıyoruz ve değişkenlerimizi  tanımlıyoruz.

public class MyDatabase extends SQLiteOpenHelper{
   public static final String DATABASE_NAME = "Rehberimiz.db";//VeriTabanımızın Adı 
   public static final String CONTACTS_TABLE_NAME = "Kisiler";//Tablomuzun Ismi
   public static final String CONTACTS_COLUMN_ID = "ID";//ID sütunu (Kimlik Kartı denebilir)
   public static final String CONTACTS_COLUMN_NAME = "Isim";// Isim sütunu
   public static final String CONTACTS_COLUMN_PHONE = "TelNo"; //Telefon Numaraları sütunu

Daha önceden parametre isimlerini değişken olarak atayarak oluşacak hataları önleyebiliriz. Şimdi gelelim yapıcı methodumuzu yazmaya . Yapıcı methodumuzda context’i çağırmamız gerekiyor hangi Activity , Fragment veya Özel Sınıf (Activityler veya Fragmentleri referans alan sınıflar) dan çağırdığımızı öğrenmek için . Context arayüzü uygulamanın o andaki durumunu öğrenmek adına istenir.

public DBHelper(Context context) {
      super(context, DATABASE_NAME , null, 1);
   }

Şimdi uygulama içerisinden MyDatabase class’ı çağırdığımız anda eğer tablomuz daha önceden oluşturulmadı ise tablomuz  oluşturma komutunu class’ın onCreate methoduna yazıyoruz

 @Override
   public void onCreate(SQLiteDatabase db) {
      // TODO Auto-generated method stub
      db.execSQL(
         "create table " +CONTRACTS_TABLE_NAME
         "("+CONTRACTS_COLUMN_ID+" integer primary key,"+
            CONTRACTS_COLUMN_NAME+" text,"+
            CONTRACTS_COLUMN_PHONE+" text)"
      );
   }

Eğer uygulamamızda tablomuzun versiyonunu veya bir tablo içerisinde tabloyu etkileyecek bir güncelleme yapıldığında onUpgrade methodu çalışır . onUpgrade methodumuzda yeni tablomuzun değerlerini yazacağımız için oluşacak bir hatayı önlemek adına tablomuzu siliyoruz.

  @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      // TODO Auto-generated method stub
      db.execSQL("DROP TABLE IF EXISTS "+CONTRACTS_TABLE_NAME);//Tablomuz eğer var ise silinsin
      onCreate(db);//Yeni Tablomuzu oluşturuyoruz.
   }

Tabloya veri eklemek için ise aşağıdaki kodu kullanıyoruz.

 public boolean KisiEkle (String Adi, String TelefonNumarasi,) {
      SQLiteDatabase db = this.getWritableDatabase();//Veritabanını yazılabilir bir şekilde çağırıyoruz
      ContentValues Satir = new ContentValues();//Conten Values satır gibi düşünülebilir , hash yapısına benzer bir yapısı vardır  (Parametre Adı , Data)
      Satir.put(CONTRACTS_COLUMN_NAME, Adi);
      Satir.put(CONTRACTS_COLUMN_PHONE, TelefonNumarasi);
      db.insert(CONTRACTS_TABLE_NAME, null, Satir);
      return true;
   }

Satir’i güncellemek için KisiGuncelle adlı methodumuzu yazalım. Bu method içerisinde kişinin ID değerini  ve yeni bilgiler ile birlikte parametre olarak almalıyız ki hangi satirin güncelleceğini bilelim .

public boolean KisiGuncelle (Integer ID, String Adi, String TelefonNumarasi) {
      /*
       Burada Tekrar veritabanını yazılabilir bir şekilde çağırıyoruz ve aynı hash yapısı (ContentValues) ile 
       Yeni değerleri tablomuza yazıyoruz.
     */
      SQLiteDatabase db = this.getWritableDatabase();
      ContentValues Satir = new ContentValues();
      contentValues.put(CONTRACTS_COLUMN_NAME, Adi);
      contentValues.put(CONTRACTS_COLUMN_PHONE, TelefonNumarasi);
      db.update(CONTRACTS_TABLE_NAME, Satir , CONTRACTS_COLUMN_ID+" = ? ", new String[] { Integer.toString(ID) } );
      return true;
   }

Silme işleminde ise Silinecek verinin ID numarasını alıyoruz ki hangi satırı sileceğimizi bilelim.

public Integer KisiSil (Integer ID) {
      SQLiteDatabase db = this.getWritableDatabase();
      return db.delete(CONTRACTS_TABLE_NAME, 
      CONTRACTS_COLUMN_ID+"= ? ", 
      new String[] { Integer.toString(ID) });
   }


Son olarak bir Array formatında kişileri veritabanından okuyalım.

public ArrayList<String> KisileriGetir() {

      /*
       Burada dilerseniz bir Hash yapısı ile ID,Adi,TelNo alanlarını çekebilirsiniz.
       Biz sadece kişilerin Adını çekiyoruz.
      */
      ArrayList<String> ContractsArray= new ArrayList<String>();
      
      SQLiteDatabase db = this.getReadableDatabase();
      Cursor res =  db.rawQuery( "select * from "+CONTRACTS_TABLE_NAME, null );
      res.moveToFirst();
      
      while(res.isAfterLast() == false){
         array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME)));
         res.moveToNext();
      }
      return array_list;
   }
admin

Bir Cevap Yazın