• Şuradasınız
  • Anasayfa
  • Android
  • 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.

1

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.

1.1

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.

2

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.

3

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.

4

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.

5

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.

ekran1 ekran2

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.

1

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.

22

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.

1 2 3

 

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.

Benzer Yazılar

Yorumlar

  • özgür , 04 Mart 2013 - 21:56

    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

    Cevapla
  • ferhat , 26 Mart 2013 - 19:41

    put metodu eksik

    Cevapla
  • Hamdi , 04 Nisan 2013 - 09:01

    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});

    }

    Cevapla
  • Ozan SARI , 28 Mayıs 2013 - 09:23

    İ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

    Cevapla
  • Murat , 20 Haziran 2013 - 07:17

    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 ?

    Cevapla
  • gökhan , 24 Temmuz 2013 - 18:57

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

    Cevapla
  • gökhan , 25 Temmuz 2013 - 16:54

    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 🙂

    Cevapla
  • murat , 31 Temmuz 2013 - 12:06

    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.

    Cevapla
    • Mehmet Kirazlı , 31 Temmuz 2013 - 13:40

      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

      Cevapla
  • Ahmet KAYHAB , 25 Ekim 2013 - 21:33

    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

    Cevapla
  • Muhammet Taşkale , 03 Kasım 2013 - 18:48

    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 ?

    Cevapla
  • Muhammet Taşkale , 05 Kasım 2013 - 18:07

    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.

    Cevapla
  • önder , 08 Kasım 2013 - 10:50

    Merhaba

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

    Cevapla
  • Mehmet Kirazlı , 11 Kasım 2013 - 23:59

    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.

    Cevapla
  • Kübra Özdemir , 07 Temmuz 2014 - 13:05

    İ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

    Cevapla
  • Erkan , 13 Aralık 2015 - 23:14

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

    Cevapla
    • Mehmet Kirazlı , 16 Aralık 2015 - 19:31

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

      Cevapla
      • Erkan , 17 Aralık 2015 - 00:34

        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.

        Cevapla
  • teknoloji , 01 Ocak 2016 - 16:49

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

    Cevapla
  • Taha , 25 Mayıs 2016 - 10:35

    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.

    Cevapla
  • Can , 29 Haziran 2016 - 15:28

    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.

    Cevapla
    • Mehmet Kirazlı , 17 Ağustos 2016 - 19:55

      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

      Cevapla

Yorum Yazın

Su elementleri kullanabilirsiniz : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Arama
RSS
Beni yukari isinla