Anasayfa / Android Dersleri / Android Dersleri 14 : Veritabanı İşlemleri – 2

Android Dersleri 14 : Veritabanı İşlemleri – 2

Merhaba arkadaşlar. Bu derste veritabanı ile ilgili kalan konuları yani silme, güncelleştirme gibi olayları anlatacağım. Basit örnekler üzerinden gidiyorum. Gelişmiş uygulamaları size bırakıyorum.
Bir önceki derste anlattığım ekleme ve gösterme olaylarından sonra şimdi silme ve güncelleştirmeyi anlatacağım fakat bu 4 temel kavramı bir örnek üzerinde tekrar göstereceğim. İlk olarak projemizi oluşturalım ve sayfamıza şu şekilde eklemeler yapalım.

android veritabanı

Uygulamamız bu şekilde olacak. 4 temel işlev için 4 butonumuz olacak. En alttaki Medium Text kısmında da, veritabanından çekilen bilgiler gösterilecek. Burada ben TableLayout ve içerisinde de TableRow kullanarak bu araçları bu şekilde dizdim.

Şimdi yine bir önceki derste olduğu gibi src altında bir Veritabani adında sınıf oluşturalım ve kodlarını aşağıdaki gibi yapalım.

android veritabanı

Buradaki kodlar, tablo adı ve alanları farklı olmak üzere bir önceki örnekteki ile aynı. Buradaki kodların ne anlama geldiğini tekrar anlatmayacağım. Bir önceki ders olan Android Veritabanı – 1 adlı derse gidip oradan bakabilirsiniz. Burada temel olarak veritabanımızı, tablomuzu ve bu tablonun alanlarını tanımladık. Hemen uygulamamızın dosyalarını da göstereyim.

android veritabanı

Bu işlemlerden sonra şimdi MainActivity.java dosyamıza gidelim ve sayfamızdaki buton, edittext gibi araçların tanımlamasını yapalım ve id’leri ile bağlayalım. Bunu da aşağıdaki gibi yaptım.

android veritabanı

Sayfamızdaki araçları tanımlamanın yanında bir de Veritabanı sınıfından bir nesne oluşturdum. Bu nesne ile işlemlerimi yapacağım. Şimdi ekleme butonuna tıklandığında girilen alanların veritabanına eklenmesini yapalım. Bunu da bir önceki derste anlatmıştım fazla üzerinde durmayacağım. Kodlar aşağıdaki gibi olacaktır.

android veritabanı

Burada Ekle butonuna tıklandığında, edittext’lere girilen tüm bilgileri kayitekle() metoduna gönderecek. Bu kayitekle() metodunda da bir bağlantı açılacak ve put() metodu ile bu gelen 4 parametre, solundaki sütun isimlerine aktarılacak. Bunları yine bir önceki derste anlatmıştım. Son olarak da insertorThrow() metodu ile bilgileri taşıyan cv1 nesnesi, tabloya eklenecek.

Şimdi de listeleme yapacak olan buton için kodları yazalım. Bu da şu şekilde olacaktır.

android veritabanı

Buradaki Göster butonuna yani nesnesine tıklandığında bilgileriGoster() metoduna gidecek. Bu metodda iscibilgi tablosundan sütunlar isimli sütunlar çekilecektir. Daha sonra while döngüsü içinde, veritabanındaki kayıtlar satır satır okunacaktır. Bu döngü içerisinde de ad, soyad, yas, sehir adlı sütunlardan veriler çekilecek ve veriler adlı değişkene atılacaktır. Son olarak da textview içerisine yazılacak.

Programımızın şuana kadar yaptığımız kısmın çıktısını gösterirsek şu şekilde olacaktır.

android veritabanı android veritabanı

Burada bilgileri girip Ekle tuşuna basınca verileri kaydediyor ve Göster deyince de bu şekilde verileri gösteriyor. Şimdi kalan kısmı yapalım. MainActivity.java dosyasını kodlamaya devam ediyoruz. Silme işlemi için de aşağıdaki gibi kodları yazalım.

android veritabanı

Burada da silme butonuna tıklandığında bir listener oluşturduk ve bu listener içerisinde click olayında, silme() metodunu çağırdık. Parametre olarak da, hangi veriye göre silme yapacağız onu yazdık. Ben burada ada göre silme yapacağım. Yani adı girilen kişiyi silecek. Daha sonra bu silme() metodunu oluşturdum ve içerisinde bir nevi bağlantı açtım. Yine bu db nesnesi üzerinden de delete() metodunu çağırdım. Bu metoda 3 parametre verdim. İlk parametre tablo adı, 2.parametre bir nevi WHERE sorgumuz. Son parametre de soru işareti yerine gelecek olan değer. Yani gönderdiğimiz ad verisi.Bunu String tipinde bir dizi şeklinde oluşturduk. Bu yöntemi kullanırsanız parametrelerin sırası bu şekilde olmalıdır. 

Bu işlemlerden sonra adını girdiğimiz veriyi silecek. Şimdi de güncelleme işlemini yapalım. Yine ada göre güncelleme yapsın. MainActiviy.java sınıfımızda yine şu satırları ekleyelim.

android veritabanı

Güncelleme butonu için bir Listener oluşturduk. Daha sonra Guncelle() metodunu çağırdık ve parametre olarak ad değerini gönderdik. Bu metodun içerisinde de silmeden farklı olarak ContentValues nesnesi oluşturduk ve db nesnesi üzerinden bu sefer update() metodunu çağırdık. Bu metod da 4 parametre alıyor.

Bu işlemlerden sonra uygulamamızı çalıştırdığımızda güncelleme için ekran görüntüleri şu şekilde olacaktır.

Ekran Görüntüleri

android veritabanı android veritabanı android veritabanı

Burada isim kısmına Mehmet girip Güncelle butonuna tıkladığımızda, yeni girilen 55 değeri ile beraber kayıt işlemi yapacak. Bunu yapıp Güncelle dedikten sonra yeni değerleri aşağıya listelenecek.

Bu ders ile beraber veritabanındaki 4 temel işlevi yüzeysel olarak inceledik. İlerleyen derslerde daha detaylı olarak ele alacağım.

Mehmet Kirazlı

İstanbul Eyüp'te ikamet ediyorum. Giresun Alucra'lıyım. Bilgisayar Mühendisliği bölümünden 2013 yılında mezun oldum. "Yeni Başlayanlar için Java 8" kitabının yazarıyım. Şu anda özel bir firmada Mobil Yazılım Geliştirme Uzmanı olarak çalışıyorum.

İlginizi Çekebilir

Android Dersleri 29 : Telefon Rehberi Uygulaması Yapıyoruz

Merhaba. Yine uzunca bir aradan sonra yazmaya devam ediyorum. Bu yazımda,  veritabanında değinmediğim Where ifadesine yer …

31 Yorumlar

  1. hocam iyi günler. androidde veri tabanı işlemlerini yaparken xammp gibi bir yerel sunucu kullanarak tabloları görüntüleyip kendimizin verileri girme imkanı yok mudur

  2. put metodu eksik

  3. hocam silme metodunda veritabanını db.getReadableDatabase() olarak açmışsınız, sanırım db.getWritableDatabase() olmalı. Ayrıca arkadaşın dediği gibi güncelleme metodunda put metodu eksik kalmış sanırım. Ben aşağıdaki gibi yaptım. Bu arada bir aydır ders yayımlamadınız yoğunsunuz sanırım. Yeni dersleri sabırsızlıkla bekliyorum.

    guncelle.setOnClickListener(new OnClickListener() {

    @Override

    public void onClick(View arg0) {

    Guncelle(ad.getText().toString(),soyad.getText().toString(),yas.getText().toString(),sehir.getText().toString());

    }

    });

    …..

    private void Guncelle(String adi, String soyadi, String yasi, String sehri)

    {

    SQLiteDatabase db=v1.getWritableDatabase();

    ContentValues cv=new ContentValues();

    cv.put("soyad",soyadi);

    cv.put("yas", yasi);

    cv.put("sehir",sehri);

    db.update("iscibilgi", cv, "ad=?", new String[] {adi});

    }

  4. İyi günler,

    Yaamayı planladığım basit bir uygulamada veritabanı kullanmak istiyorum. Yoğun bir şekilde metin gösterimi içeriyor. Daha önceden yaratılmış veritabanında içerik mevcut. Kullanıcı uygulamayı kurduğunda hazır veritabanımıda direk kurmasını ve bu veritabanından okuyup bilgiyi göstermeyi istiyorum. Mümkün müdür? Sqlite kullanıyorum

    Teşekkürler

  5. Merhaba konu biraz alakasız kalabilir şimdiden özür dilerim. Sorum şu android cihazdaki uygulama içinde wi-fi ile bağlı local ağ üzerinden bilgisayardaki dosyaya(ör txt dosyasına) ulaşıp veri alış verişi yapabilirmiyiz ?

    Ör; bilgisayarımızdaki txt dosyasına ağ içinde android cihazımızda yaptığımız uygulamadaki textbox lar yardımıyla kayıt güncelleme gibi işlemleri yaptırabilirmiyiz ?

  6. Manifest dosyasını ayarlıyamadım yardımcı olabılımrısınız?

  7. anlatmıs olduklarınız hepsını yaptım ama emulatoru calıstırıp herhangı bır butona tıkladıgımda hata verıp kapanıyor..manifeste hata olacagını dusundum ama yenı basladım ogrenmeye 🙂

  8. sayın gökhan.
    ben de aynı sorunu yaşamıştım. eğer butona tıklayınca göçüyorsa problem butonun clikc eventindedir. butonun click eventine komple try catch attım ve hata mesajını textview e attım. textview de gösterilen hataları internette aratıp çözdüm. tavsiye ederim. illa try catch acman şart değil logcat dan da takip edebilirsin.

    sayın mehmet kirazlı,
    benim problemim biraz karışık. ben bir çeşit film arşiv programı yapıyorum. bir arama butonuna tıklandığında girilen tarihteki filmleri sıralıyorum. benzer şekilde yapımcı adı ile de sıralama ypıyorum. ancak film tavsiyesi için bir butonum daha var. bu butona tıklandığında veritabanından rastgele bir film türü ya da film yapım yılı seçecek ve eğer kullanıcı önerilen film türünü beğenirse bir diğer butona tıklayacak ve o yıldaki ya da türdeki filmler gsterilecek. diğer sıralama butonlarında kullandığım kodları. txtview a rastgele bir tür ya da yıl atayabiliyorum. ancak diğer butona tıklayıp o yldaki ya da türdeki filmleri listelemek istediğimde şu satırda hata alıyorum.

    String coming = cursorr.getString(cursorr.getColumnIndex(“film_turu”)+1);

    hata kodum da şöyle: index -1 requested with a size of 0
    internette de çok aradım ama bir türlü çözemedim. lütfen yardım.

    • O türdeki filmleri listelemek istiyorsanız, o türü veritabanına sorgu olarak göndermeniz gerekir. Sorgu sonunda cursor ile tek tek yazdırırsınız.
      +1 ifadesinin burda kullanışlı olduğunu düşünmüyorum

  9. Merhaba.
    Uygulama yöneticisinde Veriyi Sil dediğimizde veritabanı siliniyor. Silinmemesi için ne yapabiliriz. Ayrıca veritbanının telefonda yeri nerde.
    Saygılarımla

  10. veritabanına kameradan çektiğimiz resmi nasıl kayıt ettirebilirim kameradan resmi çektiriyorum ama kayıt işleminde sorun var bununla ilgili uygulama dersi anlatabilir misiniz ?

  11. veritabanına kayıtları otomatik olarak gösterse alt tarafda textview de bilgileri göster butonuna tıklamadan visual studio da form_load kısmına yazıyoduk burda hangi kısma yazıcak onu çözemedim yardımcı olabilir misinz.

  12. Merhaba

    Oluşturulmuş veritabnını nasıl bağlarız

  13. Eğer aynılarını yaptığınız halde hata alıyorsanız, YAS alanını da TEXT olarak belirleyin ve okurken de getString() metodunu kullanarak okuyun.

  14. İyi günler . Ben bir yazılım firmasında staj yapıyorum. Staj projesi olarak androidde bir arabanın bir haftada ne kadar yakıt tükettiğini ve km başina kaç tl yakıt harcadığını bulan bir program yazmam isteniyor. Stajım bu Cuma bitiyor,ancak ben hala projeyi yapabilmiş değilim ayrıca bize yardım edebilecek kimse de yok. Android de programları hatasız yazıyorum (buradaki örnekleri) ancak emulatörde çalıştırmıyor.Bana yardımcı olabilirseniz çok sevinirim

  15. Hocam merhaba, ben sadece 1. parametredeki editText’i kayıt edebiliyorum. 2,3,4. parametreler hata veriyor. Bu konuda bir fikriniz var mı?

    • Aynı şekilde yaptıysanız kaydetmesi gerek. 2,3,4. parametreleri edittext içinden alamamış olabilirsiniz.

      • Uğraşacağız artık.
        -Peki hocam bu sqlite ‘dan başka bir yöntem yok mudur? Yani kullanacağım 25 farklı hafıza ve 8 bitlik kafi.
        -Uygulamayı sildiğimizde, uygulama içindeki veritabanları da silinir mi?
        -Programı telefonumuz üzerinden derlediğimizde veritabanları silinir mi?
        -Uygulamanın ilk defa yüklendiğini(Google play vs. den) anlayabileceğimiz, geliştiricilere sunulan bir fonksiyon var mıdır?
        -İlk tablo oluşturmada, manuel olarak bir satır(değerleri ile birlikte) ekleme örneği gösterebilir misiniz?

        Bana tek bir satır ve en fazla 25 sütun lazım. Güncelleyerek işlem yapmam gerekiyor. Bu konuda küçük ve “temel” bir örnek rica edebilir miyim sizden?

        Teşekkür ederim. İyi çalışmalar.

  16. Merhaba hocam, veritabanindaki bilgilerin hepsini nereden düzenleyebilirim acaba?

  17. Hocam iyi günler.Bu yaptığınız örnek de(silme ,ekleme ,güncelleme ve gösterme)yaptığınız örnekleri sadece netbeans java da tabloya ihtiyaç duyulmadan(direk program komutlarını run ederek)nasıl yapabilirim?

    Size iyi çalışmalar.

  18. Hocam merhaba,
    Öncelikle çok güzel anlatmışsınız.
    Veritabanına kayıt yaptıktan sonra bu kayıtları göster deyince sadece son kaydedileni gösteriyor. Hepsini görmek için ne yapmam gerekli.Öncekileri görebilmek için sonuncuyu silmem gerekiyor şuan.

    • Merhaba. Kodları aynen böyle yazdıysanız doğru çalışır ama yine de tek kayıt geliyorsa sorgunuzda hata olabilir. Veritabanını sqlite programıyla açıp bir bakın belki de gerçekten 1 kayıt vardır

Bir cevap yazın

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