Merhaba arkadaşlar. 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 sqlite ile veritabanı kullanımı konusunu 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 Text alanları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 Veritabani adlı 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 de super 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 Method diyerek 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. Bu execSQL 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,INT ve 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ı alanda ekleme metodumuzu oluşturduk ve 2 parametre alıyor. 4. alanda v1 nesnesi üzerinden getWritableDatabase() 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ı örnekleri insert() ile yapacağım. İlk parametresi tablo adı, diğer parametre null, son parametre ise ContentValues nesnemizdir.
Ş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 olarak tablo adı, daha sonra veritabanından okunacak alanı gösterdik. Kalan 5 null değeri sırasıyla ; where koş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çerisinde moveToNext() 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ı textview nesnelerine atarak ekrana yazdırdık.
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. Diğer derslerde silme, güncelleme gibi işlemleri yapacağım ve farklı ekleme yöntemlerinden bahsedeceğim.
Merhaba. Firebase Events'e istatistik attığınızda not set şeklinde bir değer görüyorsanız olası çözümünü göstereceğim. (daha&helliip;) Daha Fazla Oku
Merhaba. Android cihazlar için hazırladığım Namaz Vakitleri uygulaması ile 200'e yakın ülkede tüm namaz-ezan vakitlerini… Daha Fazla Oku
Selamlar. İnsanlar için faydalı olması amacıyla geliştirdiğim Kaza Namazı ve Oruç Takip Uygulamasını sizlere tanıtmak… Daha Fazla Oku
Volley, Android uygulamalarımızda kullandığımız AsyncTask'ın alternatifi olarak ortaya çıkarılan, Google I/O 2013 sunumunda duyurulan bir… Daha Fazla Oku
Merhaba. Bu yazımda Android platformunda kullanıma sunulan, bazı kod bloklarını basitleştiren ve okunabilirliği arttıran ButterKnife… Daha Fazla Oku
Merhaba. Bu yazımda artık baş belası olmuş TikTok reklamlarını, Android uygulamalarımızdaki Admob reklamlarından nasıl kaldıracağımızı… Daha Fazla Oku
Yorumları Göster
Hocam merhaba...
Emeğinize sağlık. Çok faydalı bir ders oldu.
Çok yararlı bir yazı dizisi.
merabalar hocam dersleriniz çok yararlı oluyor bizim için çok teşekkür ederim.
ama ben şöyle bir hata aldım yardımcı olabilirseniz çok sevinirim internette araştırdım ama sağlıklı bir sonuç bulamadım...
"the source attachment does not contain the source for the file sqlitedatabase class" bunun için ne yapabilirim??
saygılarımla..
Teşekkür ederim ama malesef bir fikrim yok.
Unfortunetly Veritabani has stopped. diye uyarı alıyorum hocam kaydet butonuna bastığımda nereyi yanlış yapmış olabilirim hocam.
bende yukarıdaki gibi kaydet butona basınca veritabanı has stopped diye hata alıyorm uygulama kapanıyor araştırdım ama çözümü ile ilgili pek bişey bulamadım yardımcı olursanız çok sevinir oyaladı çözüm aramak baya
Hata alanlar için :
cv1.put kısmında tırnak içerisindeki alanları "ad" ve "soyad" olarak düzeltin. Eğer yine hata alıyorsanız buton ve edittexleri bağlarken id'lerin uygun olup olmadığını kontrol edin
Merhaba, andoroid telefondan uzaktaki bi database bağlanıp internet üzerinden , bu veritanında işlem yapmayı nasıl gerçekleştirebiliriz
Merhaba. Yakın zamanda onunla ilgili bir ders yayınlayacağım
aynı hatayı bende alıyorum Unfortunetly Veritabani has stopped.
şeklinde çözüm bulan var mı acaba.
merhaba. Hocam internet üzerinden dataubase bağlanıp işlemler yapma ile ilgili bir örnek uygulama yayınlayacağını söylemşsin. Sitede bulamadım hocam size zahmet bu konuyla ilgli bir örnek uygulma yayınlarsanız çok makbule geçer
aynen kaydet butonuna basınca Unfortunately veritabani1 has stoped hatası alıyorum.bunun nedeni ne olabilir hiçbir hata da göremiyorum hepsi tam gibi acaba emilatörden mi gercek cihaza atsam çalışırmı bi deneyejem.çözüm bulan varsa yazsın lütfen...
ekleme() fonksiyonunun aldığı parametreleri ad,soyad olarak düzeltin ve fonksiyonun içerisinde de adi ve soyadi yerine ad ve soyad parametrelerini atayın