04-09-2017, 09:43 PM
Merhaba arkadaşlar. Bu derste, android uygulamalarında kullanılan temel araçları inceledikten sonra bize en çok lazım olan kısma geçiş yapıyoruz. Hangi dili öğrenirseniz öğrenin, işin en zevkli kısmı veritabanıişlemleridir ve veritabanını öğrendikçe daha kaliteli uygulamalar yapmak istersiniz. Ben de bu derse, android üzerinde basit olarak veritabanı nasıl kullanılır onu anlatacağım.
Android uygulamalarımızda veritabanı olarak genelde SQLite dediğimiz açık kaynak kodlu veritabanı kullanılır. Bu veritabanı, birçok programlama dili ile uyumludur. Android ile beraber kullanıldığında hızlı çalışır ve performansı yüksektir.
Şimdi zaman kaybetmeden bir proje oluşturalım ve sayfamızın görüntüsünü şu şekilde yapalım.
Burada basit bir örnek oluşturmak için önce ad ve soyadı alacağız. Kaydet butonuna tıkladığımızda bunları veritabanına kaydedecek ve daha sonra Bilgileri Getir dediğimizde de alttaki Large Textalanlarına bunları getirecek.
Daha sonra src altındaki pakete sağ tıklayarak New-Class diyoruz ve yeni bir sınıf oluşturuyoruz. Bu sınıfımızı ben aşağıdaki isimle oluşturdum.
Buradaki sınıfımızda, veritabanıyla ilgili işlemleri yapacağız. O yüzden oluşturduk. Sınıfımızı oluşturduktan sonra ben sınıfın içerisine temel şeyleri yazacağım ve daha sonra bunların ne anlama geldiklerini açıklayacağım.
Burada ilk olarak sınıfımızı SQLiteOpenHelper sınıfından extend ettik yani türettik. SQLite veritabanını kullanabilmemiz için bu zorunludur. Daha sonra 2 adet değişken tanımladık. Birisi veritabanı adını tutacak diğeri de sürümünü. Bunları static ve final olarak tanımladık yani bir nevi sabit. Daha sonra bu Veritabaniadlı sınıfımızın yapıcısını oluşturduk. Yapıcılar bildiğiniz gibi sınıf ismi ile aynı adı taşırlar. Bu yapıcı,Context tipinde bir c nesnesini parametre olarak aldı. c ismini rastgele verdim. Bu yapıcının içinde desuper metodunu çağırdık ve parametre olarak; c nesnesi, veritabanının adını tutan değişken, null, veritabanı sürümü olarak 4 adet parametre verdik. Buraya kadar yaptıklarımız zorunlu.
Burada Veritabani adlı sınıfımızın altını çizdi. Yanındaki kırmızı çarpıya basıp Add Unimplement Methoddiyerek 2 adet metod ekliyoruz. Metodların eklenmiş hali aşağıdaki gibidir.
Kalıtım yaptığımız için implement etmemiz gereken 2 tane metod verdi bize. Yani bu 2 metodu mutlaka kendi sınıfında kullanmalısın dedi. Bu metodlardan 1 numaralı olanda genelde veritabanı işlemleri oluşturulur. Burada yapılacak olan işlemler 1 defalığına yapılır. 2 numaralı metodda ise sürüm güncelleştirmelerinde yapılacak olanlar yazılır.
Bu alanlara aşağıdaki gibi kodları yazalım
onCreate() metodunun içerisine, parametre olarak aldığı db nesnesinin execSQL() metodunu yazdık. BuexecSQL metodu, parametre olarak aldığı sorguyu çalıştırır. Biz sorgumuzda bilgiler adında bir tablo oluşturduk. Bu tablo da TEXT tipinde ad ve soyad sütunlarına sahip oldu. Android’de genelde TEXT,INTve REAL veri tipleri kullanılır. onUpgrade() metodunda ise yine db.execSQL() metodunu kullandık ve parametre olarak bir sorgu yazdık. Bu sorgu, eğer öyle bir tablo varsa; onu sil demektir. Bir alt satırında da bu db nesnesini onCreate() metoduna gönderdik. Bunları yazmak zorunludur.
Bu işlemleri yaptıktan sonra şimdi MainActivity sınıfımızı açalım. İlk aşamada butonları, editview’larıbağlama işlemini yapalım. Bunları yaptıktan sonra görüntümüz şu şekilde olacaktır.
1 numaralı alanda nesneleri tanımladık. 2 numaralı alanda, biraz önce oluşturduğumuz Veritabani adlı sınıftan v1 nesnesi oluşturduk. 3 numaralı alanda bu v1 nesnesinin new ile bellekte yer kaplamasını sağladık. 4 numaralı alanda nesneleri bağladık. 5 numaralı alanda ise Kaydet butonuna tıklandığında yapılacakları yazacağız. Şimdi bu sayfayı biraz daha dolduralım.
Evet sınıfımızın içini yavaş yavaş dolduruyoruz. Burada veritabanı ile ilgili işlemleri yapacağız. 1 numaralı alanda, kaydetme butonuna tıklandığında yapılacakları yazacaktık. Bunları try içerisinde yaptık çünkü veritabanında hata olursa uygulama patlamasın hemen. Burada ekleme metoduna 2 parametre gönderdik. Bu parametreler, edittext’e girdiğimiz değerler. 2 numaralı alanda bağlantıyı kapattık. 3 numaralı alandaekleme metodumuzu oluşturduk ve 2 parametre alıyor. 4. alanda v1 nesnesi üzerindengetWritableDatabase() metodunu çağırdık. Çünkü biz şuan ekleme yani bir yazma işlemi yapacağız. Bu işlemi de db nesnesine attık. 5 numaralı alanda zorunlu olarak ContentValues sınıfından bir nesne oluşturduk. 6 numaralı alanda bu nesnenin put() metodunu çağırarak ekleme yaptık. Peki hangi alanları ekledik? Parantez içinde ilk parametre nerede tutacağımızı gösterir. 2.parametre ise neyi tutacağız onu gösterir. Bu tutulacak olan değerleri, ekleme() metodunda parametre olarak almıştık zaten. Son 7 numaralı alanda da db’nin insertOrThrow() metodunu çağırdık. Bu metod veritabanına ekleme yapar. Son aşamadır. Bunun yerine insert() metodu da kullanılır fakat bu daha performanslıdır. İleride bazı örnekleriinsert() ile yapacağım. İlk parametresi tablo adı, diğer parametre null, son parametre ise ContentValuesnesnemizdir.
Şimdi buradaki alanları açıklayalım. 1 numaralı alanda Göster butonu için listener yazıldı. 2 numaralı alanda, bu butona tıklandığında bilgileriGoster() metoduna gidilmesi sağlandı. 3. alanda hangi sütundaki verileri çekeceğimizi gösteren bir dizi şeklinde oluşturduk.
4.alanda yine bir db nesnesi oluşturduk fakat okuma yapacağımız için bu sefer getReadableDatabase()metodunu kullandık. 5.alanda bir Cursor nesnesi tanımladık. Cursor, veritabanından çekilen veriler arasında gezinmeyi sağlar. db nesnesinin query() metodunu çalıştırdık. Parametre olarak da ilk olaraktablo adı, daha sonra veritabanından okunacak alanı gösterdik. Kalan 5 null değeri sırasıyla ; wherekoşulu, where koşulunun değerleri, groupby, having, orderby’dır. Biz bunların belirlenmesini istemediğimiz için null belirledik. Bu arada bu dersi anlatırken SQL sorgularını bildiğinizi varsayıyorum. 6.alanda bu okunanlar adındaki Cursor nesnesi ile satır satır okuma yaptık. Bunun için while içerisindemoveToNext() metodunu kullandık.
7.alanda ise bu okunan değerleri add ve soyadd değişkenlerine attık. Değerleri alırken de sütun isimleri olan ad ve soyad parametrelerini verdik ki o sütundaki ilk verileri alsın. 8.alanda da bunları textviewnesnelerine atarak ekrana yazdırdık.
Uygulamamızın ekran çıktısı ise şu şekilde olacaktır.
Bu derste androidde veritabanı işlemlerine giriş yaptık. Temel olarak veritabanı,tablo oluşturmayı ve kayıt eklemeyi ve kayıtları çekmeyi anlattık.
Android uygulamalarımızda veritabanı olarak genelde SQLite dediğimiz açık kaynak kodlu veritabanı kullanılır. Bu veritabanı, birçok programlama dili ile uyumludur. Android ile beraber kullanıldığında hızlı çalışır ve performansı yüksektir.
Şimdi zaman kaybetmeden bir proje oluşturalım ve sayfamızın görüntüsünü şu şekilde yapalım.
Burada basit bir örnek oluşturmak için önce ad ve soyadı alacağız. Kaydet butonuna tıkladığımızda bunları veritabanına kaydedecek ve daha sonra Bilgileri Getir dediğimizde de alttaki Large Textalanlarına bunları getirecek.
Daha sonra src altındaki pakete sağ tıklayarak New-Class diyoruz ve yeni bir sınıf oluşturuyoruz. Bu sınıfımızı ben aşağıdaki isimle oluşturdum.
Buradaki sınıfımızda, veritabanıyla ilgili işlemleri yapacağız. O yüzden oluşturduk. Sınıfımızı oluşturduktan sonra ben sınıfın içerisine temel şeyleri yazacağım ve daha sonra bunların ne anlama geldiklerini açıklayacağım.
Burada ilk olarak sınıfımızı SQLiteOpenHelper sınıfından extend ettik yani türettik. SQLite veritabanını kullanabilmemiz için bu zorunludur. Daha sonra 2 adet değişken tanımladık. Birisi veritabanı adını tutacak diğeri de sürümünü. Bunları static ve final olarak tanımladık yani bir nevi sabit. Daha sonra bu Veritabaniadlı sınıfımızın yapıcısını oluşturduk. Yapıcılar bildiğiniz gibi sınıf ismi ile aynı adı taşırlar. Bu yapıcı,Context tipinde bir c nesnesini parametre olarak aldı. c ismini rastgele verdim. Bu yapıcının içinde desuper metodunu çağırdık ve parametre olarak; c nesnesi, veritabanının adını tutan değişken, null, veritabanı sürümü olarak 4 adet parametre verdik. Buraya kadar yaptıklarımız zorunlu.
Burada Veritabani adlı sınıfımızın altını çizdi. Yanındaki kırmızı çarpıya basıp Add Unimplement Methoddiyerek 2 adet metod ekliyoruz. Metodların eklenmiş hali aşağıdaki gibidir.
Kalıtım yaptığımız için implement etmemiz gereken 2 tane metod verdi bize. Yani bu 2 metodu mutlaka kendi sınıfında kullanmalısın dedi. Bu metodlardan 1 numaralı olanda genelde veritabanı işlemleri oluşturulur. Burada yapılacak olan işlemler 1 defalığına yapılır. 2 numaralı metodda ise sürüm güncelleştirmelerinde yapılacak olanlar yazılır.
Bu alanlara aşağıdaki gibi kodları yazalım
onCreate() metodunun içerisine, parametre olarak aldığı db nesnesinin execSQL() metodunu yazdık. BuexecSQL metodu, parametre olarak aldığı sorguyu çalıştırır. Biz sorgumuzda bilgiler adında bir tablo oluşturduk. Bu tablo da TEXT tipinde ad ve soyad sütunlarına sahip oldu. Android’de genelde TEXT,INTve REAL veri tipleri kullanılır. onUpgrade() metodunda ise yine db.execSQL() metodunu kullandık ve parametre olarak bir sorgu yazdık. Bu sorgu, eğer öyle bir tablo varsa; onu sil demektir. Bir alt satırında da bu db nesnesini onCreate() metoduna gönderdik. Bunları yazmak zorunludur.
Bu işlemleri yaptıktan sonra şimdi MainActivity sınıfımızı açalım. İlk aşamada butonları, editview’larıbağlama işlemini yapalım. Bunları yaptıktan sonra görüntümüz şu şekilde olacaktır.
1 numaralı alanda nesneleri tanımladık. 2 numaralı alanda, biraz önce oluşturduğumuz Veritabani adlı sınıftan v1 nesnesi oluşturduk. 3 numaralı alanda bu v1 nesnesinin new ile bellekte yer kaplamasını sağladık. 4 numaralı alanda nesneleri bağladık. 5 numaralı alanda ise Kaydet butonuna tıklandığında yapılacakları yazacağız. Şimdi bu sayfayı biraz daha dolduralım.
Evet sınıfımızın içini yavaş yavaş dolduruyoruz. Burada veritabanı ile ilgili işlemleri yapacağız. 1 numaralı alanda, kaydetme butonuna tıklandığında yapılacakları yazacaktık. Bunları try içerisinde yaptık çünkü veritabanında hata olursa uygulama patlamasın hemen. Burada ekleme metoduna 2 parametre gönderdik. Bu parametreler, edittext’e girdiğimiz değerler. 2 numaralı alanda bağlantıyı kapattık. 3 numaralı alandaekleme metodumuzu oluşturduk ve 2 parametre alıyor. 4. alanda v1 nesnesi üzerindengetWritableDatabase() metodunu çağırdık. Çünkü biz şuan ekleme yani bir yazma işlemi yapacağız. Bu işlemi de db nesnesine attık. 5 numaralı alanda zorunlu olarak ContentValues sınıfından bir nesne oluşturduk. 6 numaralı alanda bu nesnenin put() metodunu çağırarak ekleme yaptık. Peki hangi alanları ekledik? Parantez içinde ilk parametre nerede tutacağımızı gösterir. 2.parametre ise neyi tutacağız onu gösterir. Bu tutulacak olan değerleri, ekleme() metodunda parametre olarak almıştık zaten. Son 7 numaralı alanda da db’nin insertOrThrow() metodunu çağırdık. Bu metod veritabanına ekleme yapar. Son aşamadır. Bunun yerine insert() metodu da kullanılır fakat bu daha performanslıdır. İleride bazı örnekleriinsert() ile yapacağım. İlk parametresi tablo adı, diğer parametre null, son parametre ise ContentValuesnesnemizdir.
Şimdi buradaki alanları açıklayalım. 1 numaralı alanda Göster butonu için listener yazıldı. 2 numaralı alanda, bu butona tıklandığında bilgileriGoster() metoduna gidilmesi sağlandı. 3. alanda hangi sütundaki verileri çekeceğimizi gösteren bir dizi şeklinde oluşturduk.
4.alanda yine bir db nesnesi oluşturduk fakat okuma yapacağımız için bu sefer getReadableDatabase()metodunu kullandık. 5.alanda bir Cursor nesnesi tanımladık. Cursor, veritabanından çekilen veriler arasında gezinmeyi sağlar. db nesnesinin query() metodunu çalıştırdık. Parametre olarak da ilk olaraktablo adı, daha sonra veritabanından okunacak alanı gösterdik. Kalan 5 null değeri sırasıyla ; wherekoşulu, where koşulunun değerleri, groupby, having, orderby’dır. Biz bunların belirlenmesini istemediğimiz için null belirledik. Bu arada bu dersi anlatırken SQL sorgularını bildiğinizi varsayıyorum. 6.alanda bu okunanlar adındaki Cursor nesnesi ile satır satır okuma yaptık. Bunun için while içerisindemoveToNext() metodunu kullandık.
7.alanda ise bu okunan değerleri add ve soyadd değişkenlerine attık. Değerleri alırken de sütun isimleri olan ad ve soyad parametrelerini verdik ki o sütundaki ilk verileri alsın. 8.alanda da bunları textviewnesnelerine atarak ekrana yazdırdık.
Uygulamamızın ekran çıktısı ise şu şekilde olacaktır.
Bu derste androidde veritabanı işlemlerine giriş yaptık. Temel olarak veritabanı,tablo oluşturmayı ve kayıt eklemeyi ve kayıtları çekmeyi anlattık.