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; }
Bir Cevap Yazın