En Yeni Konular

Android SQLite Kullanımı

    Android’te local veritabanı olarak SQLite kullanılır, SQLite açık kaynak kodlu, ilişkisel ve işlemsel(transaction) bir veritabanı yönetim sistemidir. Android’in rehber, ajanda gibi kendi uygulamaları da bu veritabanını kullanmaktadır. Bazı özellikleri;

  • SQLite kullanımı oldukça kolay bir veri tabanı sistemidir.
  • Bir SQLite  veritabanı tek dosyadan oluşur
  • Küçük boyutu ve hızlı yapısı sayesinde mobil cihazlarda kullanımı oldukça yaygındır.
  • SQLite her android cihazı içerisinde gömülüdür, kurulum gerektirmez.
  • Aynı anda “yazma amaçlı” tek bir bağlantıya izin vermektedir.

SQLite için kullanılan Sınıflar

Android’te SQLite veritabanı kullanabilmek için gerekli olan sınıflar

1. SQLiteOpenHelper: Veritabanı erişimi için kullanılan araç bir sınıftır, Database Gateway sınıfı için taban sınıf olarak kullanılır.Tabloların yaratılması ya da şematik değişiklikler bu sınıfta gerçekleştirilir.

2.SQLiteDatabase: Bir SQLite veritabanını temsil eden ve CRUD işlemlerini yapmaya yönelik üyeleri barındıran bir sınıftır.

3.ContentValues: Paremetre değerlerini oluşturulması amacıyla kullanılır.

4.Cursor: Veritabanından elde edilen bilgilerle işlem yapmamızı sağlan bir interfacedir.

5.SimpleCursorAdapter: Cursor nesnesini kullanıcı arayüzündeki ListView, GridView gibi kontrollere bağlarken kullanılan bir sınıftır.

SQLite Veritabanının Oluşturulması

Veritabanı oluşturmak için 2 yöntem vardır.

  1. Veritabanının kod yoluyla oluşturulması
  2. Bir araç kullanılarak oluşturulup projedeki assets klasörüne yerleştirilip, daha sonra “data\data\paket_ismi\databases” klasörüne taşınmasıdır.

Kod yazarak oluşturma yöntemi SQLiteOpenHelper sınıfından türetme yaparak OnCreate() isimli fonksiyonunun tabloları yaratacak şekilde kodlanmasıyla yapılır.

Bu fonksiyonun SQLiteDatabase türündeki parametresi üzerinden execSQL() fonksiyonu çağırılır. Bu fonksiyona tablolara yaratmaya yarayan parametreler verilip tablolar oluşturulur.

SQLite CRUD İşlemleri

CRUD (Create Read Update Delete) sözcüklerinin kısaltmasından oluşup, veritabanının temel dört işlemini ifade eder. bu işlemlerde insert() , update() , delete() , query() fonksiyonları kullanılır. Bu işlemler SQLiteDatabase sınıfının exeSQL() isimli fonksiyonu ilede yapılabilir ama önerilen yöntem değildir.

Veritabanına Bağlantı Yönetimi

Bağlantı açma SQLiteOpenHelper sınıfına ait getReadebleDatabase() veya getWritableDatabase() fonkiyonları ile gerçekleştirilir.

Bu fonksiyonlar geriye SQLiteDatabase türünde nesne referansı döndürürler.Geri dönen nesne üzerinden hem bağlantı açıp hem de bu bağlantı üzerinde gerçekleşecek işlemleri yapabiliriz.

Kayıt Ekleme (INSERT) & ContentValues

Bu işlem SQLiteDatabase sınıfının insert() fonksiyonu ile yapılır.

ilk parametre olarak kayıt eklenmek istenen tablonun ismi,ikinci parametre null geçilir eklenmek istenen değerleri içeren Contentvalues türünde nesne ise 3. değer olarak verilir.

Bu sınıfa parametreler put() fonksiyonuna ile belirtilir, ilk parametre olarak kolon ismi, ikinci parametre ise o kolona yerleşecek değer verilir.

SQLite Güncelleme İşlemleri

Kayıtların güncellenmesinde kullanılan update() fonksiyonu, ilk parametresinde belirtilmiş olan tabloda, son iki parametresi ile filtrelenen kayıtların ikinci parametresine geçilmiş olan ContentValues türündeki nesnenin içeriğine uygun olarak güncellenmesini sağlar.

Güncellenecek olan kayıtların filtrelenmesi için gerekli olan koşul ifadesi üçüncü parametreye verilir, değişecek olan değerler için “?” sembolü yer tutucu olarak kullanılır.

Yer tutucunun değerleri ise son parametrede geçilir, Son parametreye geçilecek olan String[] dizisi yer tutucuya gönderilecek değerleri ifade eder.Bu dizinin eleman sayısı belirtilen “?” sembolü kadar olmalıdır ve sıra bakımından eşleşmelidir.

Geri dönüş değeri olarak söz konusu işlemde etkilenen kayıt sayısını döner.

SQLite Silme İşlemi

Silme işlemlerini delete() fonksiyonu ile yaparız. ilk parametresinde verilmiş olan tablodan, ikinci ve üçüncü parametreleri ile filtrelenen kayıtların silinmesi sağlanır.

SQLite Veri çekme (SELECT) işlemleri

Verileri almak için SQLiteDatabase sınıfının query() yada rawQuery() fonksiyonları kullanırız.

rawQuery : fonksiyonu ilk parametre olarak SQL sorgulama komutu alır, ve bu komutun içerisinde “?” işareti ile sembolize edilmiş fitre parametreleri var ise, bunlara ilişkin değerleri ikinci parametresindeki String dizisindeki elemanlardan alır.

query() : fonksiyonu SQL komutunu doğrudan parametre almak yerine, aldığı parametreler yoluyla komutu kendi içerisinde yapılandırır.

  1. table : Sorgulanacak tablonun ismi
  2. colums: String dizisi şeklinde alınmak istenen kolonların isimleri
  3. selection: Normal SQL sorgusundaki where sözcügünden sonra yazılan fitre kısmı, where kelimesi kullanılmadan bu parametreye atanır. Burada kullanılan “?” işaretleri yer tutucu görevi görecektir.
  4. selecionArgs: Burada verilen parametreler selection kısmındaki “?” işaretleriyle eşleşen değerler olmalıdır.
  5. groubBy, having: String türündeki bu parametre yine string türündeki having parametresindeki belirtilen koşula göre gruplama yapmayı sağlar
  6. orderBy : Bu parametre elde edilen sonucu artan veya azalan şekilde sıralamayı sağlar.
  7. limit : Elde edilen sonuçları sınırlamayı sağlar.
Kullanılmak istenmeyen parametreler null geçilmelidir.

Cursor Interface’i ve Sonuçlar üzerindeki işlemler

rawQuery() ve query()  fonksiyonları geri dönüş nesnesi olarak bir Cursor nesnesi dönerler, bu geri dönen sorgulama sonucundaki kayıt setleri üzerindeki işlemleri Cursor interface’i üzerinden yaparız.

  • Cursor, sorgu sonucunu tutar ve bu sonuçlar üzerinde satır satır hareket etmeyi sağlar
  • Sorgu sonucunda oluşan kayıt sayısını getCount() metodu ile öğrenebiliriz. 
  • Sorgu sonucunda elde edilen satırlar arasında moveToFirst(), moveToNext() metotları ile hareket edilir
  • Sorgunun son elementine erişilip erişilmediği isAfterLast() metodu ile öğrenilir .
  • Cursor nesnesi getString() ,… metotları ile sonuçları almayı sağlar.Örneğin getLong(kolonIndex), getString(kolonIndex).
  • Cursor nesnesi ile işlemler bittiğinde close() metodu ile kapatılır.

Örneğin Kisiler tablosundaki “kisi_ad” kolonundaki “N” ile başlayan tüm kayıtları getiren sorgu

Bazı Cursor Komutları 

CURSOR pozisyon

  • cursor.moveToFirst()
  • cursor.moveToLast()
  • cursor.moveToPrevious()
  • cursor.moveToNext()
  • cursor.moveToPosition(int index)

Cursordan veri ALMA

  • cursor.getInt(index)
  • cursor.getString(index)
  • cursor.getBlob(index)
  • cursor.getCount()
  • cursor.getColumnCount()
  • cursor.getColumnIndex(“adi”))
Yazının Devamı ve Full örnek bir sonraki yazıda

Hakkında Necip Akgöz

İLGİNİZİ ÇEKEBİLİR

Android Bottom Navigation View Kullanımı

Bottom Navigation View Kullanımı Örnek Kullanmak için material design kütüphanesi build.gradle dosyasına eklenmelidir.

Bir cevap yazın

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