Android Dersleri

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

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.

Yorumları Göster

  • 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

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

    }

  • İ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

  • 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 ?

    • Bir web servis oluşturarak ağdaki bilgisayara bağlanın ve web servis içinde io işlemleri yaptırın. Olabilir diye düşünüyorum biraz daha araştırın

    • Nerede sorun yaşıyorsunuz ? Detaylı olarak anlatır mısınız ? Ne yaptınız ve ne yapmak istiyorsunuz ?

  • 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 :)

  • 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

  • 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

  • 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 ?

    • Bir resmi veritabanına, byte array şeklinde kaydedebilirsiniz. Vaktim olursa anlatacağım inşallah.

      • Umarım yakın bi zamanda anlatırsınız resmi kaydetmeyi bi proje aldm üni 1. sınıfım ve kendimi geliştirmek istiyorum bazı şeyleri yaptım ama bunu hiç beceremedim :)

Son Gönderiler

Android Firebase Event (not set) Hatası Çözümü

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

% gün önce

Namaz Vakitleri Uygulaması Yayında

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

% gün önce

Kaza Namazı ve Oruç Takip Uygulaması

Selamlar. İnsanlar için faydalı olması amacıyla geliştirdiğim Kaza Namazı ve Oruç Takip Uygulamasını sizlere tanıtmak… Daha Fazla Oku

% gün önce

Android Volley Kullanımı ve JSON Parse İşlemleri

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

% gün önce

Android ButterKnife Kütüphanesi Kullanımı

Merhaba. Bu yazımda Android platformunda kullanıma sunulan, bazı kod bloklarını basitleştiren ve okunabilirliği arttıran ButterKnife… Daha Fazla Oku

% gün önce

Admob TikTok Reklamları Engelleme

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

% gün önce