SQLite ve Android : Temel Bilgiler
1-SQlite nedir?
SQLite açık kaynak kodlu veritabanıdır. SQL syntax, transactions ve sorgulargibi standart ilişkili veritabanı özelliklerini destekler.
SQLite, TEXT (java’da String gibi), INTEGER(java’da long gibi), REAL(java’da double gibi) veri tiplerini destekler. Ayrıca diğer tüm tipler veritabanına kaydedilmeden önce yukarda verilen veri tiplerinden birine çevrilmelidir. SQLite, veritabanına girilen değerlerin tiplerini kontrol etmez. Yani string kolonuna integer ifade girebilirsiniz.
2-Android’te SQLite
SQLite her android cihazı içerisinde gömülüdür. SQLite veritabanını kullanırken veritabanı için kurulum gerektirmez.
Sadece veritabanını oluştururken ve update işlemi yaparken SQL sorgusu yazılır. Diğer işlemler Android platformu tarafından otomatik olarak yapılır.
SQLite veritabanına erişim dosya sistemine erişimi de içerir. Bu işlemler yavaş olabilir. Bu yüzden veritabanı işlemleri eş zamansız olarak çalıştırılması tavsiye edilir.
Eger uygulamanız veritabanı oluşturduysa, bu veritabanınadata/data/APP_NAME/databases/FILENAMEyolunu izleyerek ulaşılabilir.
3-SQLite Veritabanının Yapısı
3.1. Paketler
android.database paketi veritabanı ile çalışmak için gerekli olan tüm sınıfları içerir. android.database.sqlite paketi ise sadece SQLite sınıflarını içerir.
3.2. SQLiteOpenHelper Sınıfı ve Veritabanı oluşturmak ve güncellemek
Android uygulamalarda veritabanı oluşturmak ve güncellemek içinSQLiteOpenHelper ‘ın alt sınıfları kullanılır. SQLiteOpenHelper’ın constructor’ına veritabanının ismi ve güncel database versiyonu gönderilir.
Bu sınıfta iki tane metot overrideedilmelidir.
- onCreate() : Veritabanının oluşturan metottur.
- onUpgrade() : Daha önceden oluşturulmuş veritabanını güncellemeye yarayan metottur.
Her iki metot SQLiteDatabese nesnesi alır.
SQLiteOpenHelper sınıfı veritabanı nesnesine erişmek için getReadableDatabase() ve getWritableDatabase() metotlarını sağlar.
Veritabanı tablolarında primary keykullanılmalıdır.
3.3. SQLiteDatabase
SQLiteDatabase temel SQLite Database işlemlerinin yapılmasını sağlar, insert(), update(), delete().
Ayrıca ek olarak SQL sorgularını çalıştırabilmek için execSQL() metodu vardır.
ContentValues nesnesi anahtar/değertanımlamak için kullanılır. Anahtar kelimesi tablolardaki sutun isimlerini, değer ise sutun içi değerleri temsil etmektedir.
Sorgular rawQuery() ve query()metotlarıyla yada SQLiteQueryBuildersınıfıyla oluşturulur.
rawQuery() : SQL seçme sorguları için kullanılır.
query() : Özel SQL sorguları için yapılandırılmış arayüzü sağlar.
SQLiteQueryBuilder ise SQLite sorgularını çalıştırmak için yardımcı olan sınıftır.
3.4. rawQuery()
3.5. query()
query() metodu aşağıdaki parametreleri alır.
Parameter | Comment |
String dbName | Sorgunun çalıştırılacağı tablo ismi. |
String[] columnNames | Return edilecek kolon isimleri. Tüm kolonlar için null girilir. |
String whereClause | Belli dataları seçmek için girilecek koşuldur. |
String[] selectionArgs | whereClause koşulunda ? konulan dataların değeri girildiği yer. |
String[] groupBy | Seçilen satırları belli koşula göre gruplara ayırmayı sağlar. |
String[] having | Gruba ayrılan satırları filtrelemek için kullanılır |
String[] orderBy | Seçilen satırları sıralamak için kullanılır. |
3.6. Cursor
Query geriye cursor nesnesi dönderir. Cursor, querynin sonucunu ve temel olarak sorgu sonucunun bir satırını temsil eder. Bu yol sorgu sonuçlarına daha rahat erişmeyi sağlar. Çünkü öylelikle tüm datalar hafızaya yazılmamış olur.
Sorgu sonucunda oluşan element 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 get*() metotları ile sonuçları almayı sağlar. Örneğin getLong(kolonİndex), getString(kolonİndex).
Cursor nesnesi ayrıca getColumnIndexOrThrow(String) metodu ile tablonun kolon ismi için kolon indexini döndürür.
Cursor nesnesi ile işlemler bittiğinde close() mtodu ile kapatılır.
Hiç yorum yok:
Yorum Gönder