Anasayfa / Android Dersleri / Android Dersleri 26 : Veritabanı İşlemleri-3 ve SQLite Arayüzü Kullanımı

Android Dersleri 26 : Veritabanı İşlemleri-3 ve SQLite Arayüzü Kullanımı

Merhaba. Bu yazımda, deneyenlerin bazılarının hata aldığını söylediği veritabanı kullanımını tekrar anlatacağım ve SQLite kullanımına da değineceğim. 

Ekran Dizaynı ve Tool İsimledirmeleri

Proje oluşturma adımlarını atlıyorum. Uygulama tam olarak şöyle bir şey yapacak. Bir araba için model, fiyat gibi temel bilgiler girilecek kaydedilecek ve alt kısımda kayıtlı araçlar görüntülenecek.

Projenizde ilk olarak strings.xml dosyanızı açın. Buraya, sayfamızda kullanacağımız tool’ların isimlendirmelerini yazacağız.

android sqlite kullanımı

Diyelim ki bir buton, textview gibi  şeyler ekledik. Bunlara doğrudan Properties kısmından isim vermeyin. İlk olarak bu strings.xml dosyasına gelin ve burda Key-Value şeklinde isimler verin. Yani bir anahtar ve onun karşılığı.

android sqlite kullanımı

Burada name kısmına bir nevi id değeri yazdık. İçerisine de bunun karşılığı olan String’i yazdık.

1 numaralı alanda textview’lar ve buton için değerleri oluşturduk. Buton için olan “kaydetTxt” dir.  Bunu “kaydetBtn” olarak değiştirin.

2 numaralı alanda kayıtların gösterileceği textview için bir alan oluşturduk.

3 numaralı alanda ise 1 numaralı alandaki textview’ların karşısında olacak edittext’ler için değerler oluşturduk. Bu edittext’lere bilgileri gireceğiz.

Her adımdan sonra ctrl+s ile sayfayı kaydedin ki başka sayfada bu değerleri kullanabilesiniz.

Şimdi activity_main.xml sayfasına gelin ve sayfanıza aşağıdaki gibi textview, buton, edittext gibi şeyler ekleyin.

android sqlite kullanımı

Burada biz bir araç için bilgiler gireceğiz. Kaydet butonuna bastıkça bu değerler veritabanına eklenecek ve her basışta alt kısımda da kayıtlı araçlar gösterilecek.

Şimdi örnek olarak Marka textview’ının üzerine tıklayın ve sağ tarafta Properties-Text alanının yanındaki küçük … butonuna basın ve bu textview’a ait id değerini seçin. Bu işlemi, ekrandaki tüm toollar için yapın. Yani şu şekilde :

android sqlite kullanımı

android sqlite kullanımı

Burada seçtiğimiz değerler, strings.xml dosyasında oluşturduğumuz değerlerdir. Karşılığında ise >< tagları arasında yazdığımız değerler gelir.

Her biri için tek tek yaptıktan sonra ekrandaki sarı ünlemlerin gittiğini göreceksiniz. Yani demem o ki bir butona tıklayıp sağ taraftan ya da sayfanın xml dosyasından adını değiştirmeyin ve bu şekilde yapmaya kendinizi alıştırın.

Bu arada properties kısmını bulamadıysanız Window-ShowView-Other kısmında Properties yazın ve Eclipse ekranınıza getirin. Bu işlemlerden sonra sayfanız aşağıdaki gibi tertemiz olacaktır.

android veritabanı kullanımı

En alttaki textview kayboldu çünkü strings.xml dosyasında onun karşılığını boş vermiştik. 

Veritabanı Oluşturma

src klasörüne sağ tıklayıp new-class diyerek “Veritabani” adında bir sınıf oluşturun. Sınıfınızı aşağıdaki gibi düzenleyin.

android veritabanı kullanımı

Burada altını çizdi çünkü paketi import etmedik. CTRL+SHIFT+O tuşlarına basın ya da imleci uyarının üzerinde bekleterek import deyin ve ekleyin. Görüntü aşağıdaki gibi olacaktır. Daha sonra aşağıdaki gibi bu sefer “Veritabani” sınıf adında hata verecektir.

android veritabanı kullanımı

Burada da şunu diyor. Sen bu sınıfı extends (kalıtım) ettin ama SQLiteOpenHelper sınıfını kullanacaksan yapıcılarını(CONSTUCTOR) eklemen gerekiyor. Şimdi bu “Veritabanı” sınıfımızın üstünde fareyi beklettikten sonra karşımıza gelen ilk seçeneğe tıklayın.

android veritabanı kullanımı

Tıkladıktan sonra son görünüm aşağıdaki gibi olacaktır.

android veritabanı kullanımı

Bunları şunun için anlatıyorum. Ben size doğrudan sınıfın bitmiş halini verirsem yazarak zaman kaybetmeyin ve olayın nasıl olduğunu anlayın. Ayrıca burda bir sürü büyük küçük harf var tek tek uğraşmayın.

Bakın yine hata verdi. Şimdi yine hatanın üzerine gelin ve “Add unimplemented method” seçeneğine tıklayın.

android veritabanı kullanımı

Burda da şunu demek istiyor. Bu SQLiteOpenHelper sınıfını kullanacaksan bazı metodlarını implemente etmen gerekiyor. Bu SQLiteOpenHelper sınıfı bunu zorunlu koşmuş. Beni kullanan bunu yapmak zorundadır diye. Son görünüm şöyle olacaktır.

android veritabanı kullanımı

Şimdi bu alanları dolduracağız. Doldurduktan sonra neyin ne işe yaradığını tekrar anlatmayacağım. Fakat kısaca değineceğim. Daha önceki veritabanı derslerinden bunların ne demek olduğunu öğrenebilirsiniz. Bu alanları doldurduktan sonra da görünüm şu şekilde olur.

android veritabanı kullanımı

Burada kısaca “araclar” adında bir veritabanı, “aracbilgileri” adından bir tablo oluşturduk ve tablonun alanlarını girdik. Veritabanı oluşturma bitti şimdi asıl kodlamaya geçelim.

Tool’ları Id Değerleri ile Eşleştirme

Ekranda tanımladığımız buton, texview gibi toollar için id değerleri ile eşleştirme yapacağız. MainActivity.java sınıfına gelin ve aşağıdaki kodları yazın.

android veritabanı kullanımı

Eğer altı çizilen bir şey olursa import etmeniz gerektiğindendir. CTRL+SHIFT+O diyerek ekleyebilirsiniz.

Burada R.id.editText1 dedik. Çünkü bu markaEdt’nin sayfadaki karşılığı budur. Bunu şurdan öğrenebilirsiniz.

android veritabanı kullanımı

 

Şimdi butona tıklandığında yapılacakları yazalım. En önemli kısım bu zaten.

Kaydet Butonu Altında Kodların Yazılması

Butonumuzun click olayını yazacağız şimdi. Bunu da adım adım anlatıyorum çünkü tek tek elle yazmayın. MainActivity.java sınıfını açın ve onCreate() metodunun içine şu kod satırını yazın.

android veritabanı kullanımı

Daha sonra parantez içine şunları yazın.

android veritabanı kullanımı

Bunu yazdıktan sonra CTRL ye basını tutarak BOŞLUK (space) tuşuna basın ve karşınıza ilk gelen onClickListener seçeneğine basın. Kendisi tamamlayacaktır. CTRL+SPACE kombinasyonu otomatik tamamlama yapar zamandan kazandırır.

android veritabanı kullanımı

Tamamladıktan sonra son görünüm şu şekilde olur :

android veritabanı kullanımı

Burada ok ile gösterdiğim yere noktalı virgül koyun yoksa hata verir.

Şimdi tıklanma olayını hazırladık. Tıklanınca olacak şeyleri şimdi burada yazalım. Yazdıktan sonra kodların son görünümü şu şekilde olur.

android veritabanı kullanımı

Butona tıklanınca kayitEkle() metoduna gidecek.

Şimdi kayitEkle() metodunu dolduralım.

android veritabanı kullanımı

Yukarıda db bağlantılarını kapatmayı UNUTMAYIN. (ben unuttum)

Şimdi uygulamamızı çalıştıralım ve bir deneyelim.

Ekran Çıktıları

android veritabanı kullanımı android veritabanı kullanımı android veritabanı kullanımı

Eğer uygulamanız hata verirse konsola bakın. Eğer bu hata time out hatası ise aşağıdaki işlemleri yapın

Window sekmesinden Preferences seçeneğine tıklayın ve aşağıdaki gibi 5000 değerini 15000 yapın. Uygulama timeout hatası verebilir. Ayrıca doğru çalıştığını düşündüğünüz bir uygulama hata verirse de burada göz atın.

android veritabanı kullanımı

SQLite Professional ile Veritabanındaki Bilgilerin Gösterilmesi

Veritabanına eklediğimiz değerleri şimdi SQLite programı ile görelim. Ben SQLite Professional programını indirdim. Şimdi ilk olarak veritabanımızı masaüstüne çıkarmamız gerekiyor. Bunun için şunları yapın.

Uygulamanızı çalıştırın. Yani emülator çalışsın. Bu olmadan olmaz. Tamamen çalıştırın ve projenizi görüntüleyin. Daha sonra,

Eclipse’de sağ üst köşedeki perspektif ekleme butonuna basalım ve karşımıza gelen ekrandan DDMS yi seçelim

android veritabanı kullanımı

Daha sonra aşağıdaki gibi solda emülatör gelecektir. Sağda da üstteki sekmeden File Exporer seçeneğini seçin. Karşınıza şöyle bir ekran gelir.

android veritabanı kullanımı

Buradan sağdaki alandan data>data>proje adı seçeneklerine tıklayarak veritabanınızın olduğu klasöre kadar ilerleyin. Son ekran şöyle olacaktır.

android veritabanı kullanımı

Bu “araclar” isimli veritabanına tıklayın ve sağ üstteki sol ok butonuna basın (pull a file from the device). Sonra veritabanını masaüstüne kaydedin. Eğer kaydetmezse Eclipse’yi ve emülatörü kapatın sonra ikisini tekrar çalıştırıp deneyin. Şimdi SQLite programını açın.

android veritabanı kullanımı

Open Database dedikten sonra masaüstündeki veritabanını seçin.

Aşağıdaki resimdeki gibi sekmelere gidin ve tablonuzu açın.

android veritabanı kullanımı

SQL sekmesine gelin ve şimdi kayıtları getiren sorguyu yazalım ve Execute SQL butonuna basalım.

android veritabanı kullanımı

Kayıtlar aşağıdaki gibi listelendi.

android veritabanı kullanımı

Bir sonraki derslerde görüşmek üzere….

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 …

58 Yorumlar

  1. mehmet bey. çok teşekkürler.

  2. Nazım BÜTÜN

    Üstadım, emek vermişsiniz, elinize, kolunuza, beyninize sağlık. Yeni başladığım ve yabancı olduğum bu konuda, yine yabancı bir dille anlatılan kaynaklarda bocalayıp dururken, can simidi gibi oldu açıklamalarınız. Yalın ve anlaşılır bu paylaşımınız için teşekkür ederim.

  3. Anlatımınız gerçekten çok güzel emek verip bu yazıyı yazdığınız için çok teşekkür ederim. Ancak yazdıklarınızı denemek istediğimde projede gözüken bir hata olmamasına rağmen sanal cihazda denemek istediğimde beklenmedik bir şekilde kapandı gibilerinden bir yazı çıkıyor ve kapanıyor sizce sebebi ne olabilir?

    • Merhaba. Debug yapın o şekilde görebilirsiniz. Veritabanı sütun isimlerinde ya da tablo isminde bir harf bile yanlış olduğunda hata olmamasına rağmen emulator kapanır. Setcontentview metodundan sonra debug koyun ve f6 ile ilerleyin. Hangi satırda hata fırlatıyor bakın

  4. hocam öncelikle emkleriniz çok teşekkür ederim ben veritabanı oluşturamırum kodların aynısını yazdığım halde unfortunately project has stoppeed mesajı veriyor

    • Merhaba. Hocam ufak bir noktayı kaçırıyor olabilirsiniz. Ben yine de tekrar inceleyecegim

      • mrb hocam sorunu hallettim ama oluşturduğum veritabanını file explorer masa üstüne kaydettim kaydettiğim dosyadan veritabanını görebilmem için sqlitemanager kurmam gerekiyo mu acaba

        • Evet kurmanız gerek. Sorunu nasıl giderdiğinizi de yazarsanız başkaları da bilgilenmiş olur

          • türkçe karakter hatası sanırım hocam veritabanı ismini yazarken hocam birden fazla tablo oluşturmak istersek nasıl yazarız mesela hem kayı hemde bilgiler adında 2 tablo oluşturmak istersek
            @Override
            public void onCreate(SQLiteDatabase db) {
            db.execSQL(“CREATE TABLE bilgiler(ad TEXT,soyad TEXT);”);
            db.execSQL(“CREATE TABLE bilgiler(ad TEXT,soyad TEXT);”);

            }
            bu şekilde oluşturabilirmiyiz acaba

          • Hiç denemedim ama olması gerek. Tablo oluşturma işleminin olduğu heryerde kopyalama işlemini yapın

  5. unfortunately project has stoppeed hatasıs alıyorsanız yazım yanlışıdır kodlarınızı tekrar gozden geçirmeniz gerekir.

  6. programın hata vermesinin nedeni,en sonda kayıt ekle metodunda,database açık kalıyor,kapatmanız gerekiyor.

    sondaki satıra
    db.insertOrThrow(“aracbilgileri”, null, cv1);

    yazan kısmını

    db.insert(“aracbilgileri”, null, cv1);
    db.close();

    olarak düzeltirseniz sorun çölüzecektir.

  7. merhaba bende bi uygulama yapıyorm veritabanını oluşturdm ancak çalıştırdığım zaman file explorer kısmında veritabanını göremiyorm neyi yanlış yapmış olabilirim?

  8. eline sağlık hocam bi sorum olacak

    finally
    {
    v1.close();
    }
    kaydete bastığımda en sondaki } işareti Debug Current Instruction Pointer diye hata veriyor

  9. Hocam değerli anlatımınız için çok teşekkürler . Bir sorum olacaktı ,
    yukarıda örnekte yaptığınız kayıtlara göre arama yapıp bulunan değeri ayrı bir sayfada göstermek istiyorum. Örneğin marka model textview’lerine OPEL ASTRA
    yazıp arama tuşuna basınca yıl fiyat ve yakıt bilgilerini diğer sayfada görmek istiyorum .Bu konuda yardımcı olabilir misiniz?

  10. Gerçekten çok güzel anlatmışsınız Teşekkürler. Elinize sağlık

  11. Hocam öncelikle emeğinize sonsuz teşekkürler. Ancak bende data dosyasını file explorer da buluyorum fakat acilmiyor. icine giremiyorum. Ama ben emülator olarak kendi telefonumu kullanıyorum acaba ondan dolayı olabilir mi diye düşünüyorum. Programda hiç bir sıkıntı yok açılıyor ama data dosyalarına girip projemi bulamıyorum.Yardımcı olursanız çok teşekkür ederim.

  12. Merhabalar. Anlatımınız için çok teşekkürler. Benim elimde hazır oluşturulmuş bir sqlite veritabanı dosyası var. Ben projemde yeni veritabanı oluşturmak istemiyorum. Mevcut elimdeki veritabanını kullanmak istiyorum. Yabancı kaynaklarda da bulamadım. Nasıl yapabilirim yardımcı olabilirmisiniz.

  13. Merhaba hocam öncelikle çok teşşekkür etmek istiyorum yazınız için. Ama bunları uygularken bir hata alıyorum. Hatayı belirtmiş olduğunuz bu işlemi “SQL sekmesine gelin ve şimdi kayıtları getiren sorguyu yazalım ve Execute SQL butonuna basalım.” yapınca alıyorum.

    HATA

    no such table:aracbilgileri

    SQL Statement:

    select*fromaracbilgileri

  14. Hocam saygılar. Acaba Veritabanımdaki bilgileri arrayliste nasıl aktaracagım ile ilgili bir ders verebilir misiniz?

  15. Hocam merhabalar. Benim şöyle bir sorum olacak Ben kodları eksiksiz olarak yazdım fakat “unfortunately project has stopped” hatası alıyorum. Yazımı baştan sona inceledim imla hatası yok ve Program v1.close(); kodunun yazılı olduğu satırı hatalı olarak gösteriyor. Yardımcı olursanız çok sevinirim. İyi Çalışmalar.

  16. Mehmet Bey merhaba, Android geliştirmede çok yeniyim. Bir çok şeyi aştım ama şu SQLite veri tabanını kullanmakta takıldım kaldım. Verdiğiniz örneği çalıştırma aşamasına kadar getirdim fakat bazı yorumcuların da belirttiği gibi uygulama emülatörde açılmadan kapanıyor. yukarıda belirttiğiniz gibi debug modunda çalıştırdığımda ise herhangi bir hata vermiyor gibi. Sorun ne olabilir? Artık şu SQLite kullanımını anlamak istiyorum.

    • Merhaba. Kodda sorun yok çalışması gerek. Bir harften bile uygulamanız hata vermiş olabilir. Tekrar kontrol edin. Yorumlarda bazı hataların çözümü de var onlara da bakın. Ben de anlamayanlar için anlattım bu dersi

      • Yorumlardaki çözümleri de yaptım ama maalesef. Yine de tekrar kontrol edeyim. Bu arada gerçekten örnek anlatımınızdaki açıklık ve görsel destek çok iyi, teşekkür ederim.

  17. Hocam anlatım için teşekkürler, ben ” R cannot be resolved to a variable ” bu hatayı almaktayım, çözüm için hangi yolu izlemeliyim ?

  18. merhaba, sizin anlatımınızdan faydalanarak bir uygulama yapmaya çalıştım. kodda herhangi bir hata yok ama ddms altında data altında sadece lib dosyası oluşuyor. database dosyası oluşmuyor. acaba hatam nerede olabilir.

  19. Merhaba Mehmet Bey
    Hazır içinde veri olan SQLite veri tabanını kendi programımıza nasıl dahil edebiliriz? Bunun hakkında internette çok fazla bilgi bulamadım. Bu konuda sizden yardım bekliyorum. İyi çalışmalar.

    • Merhaba,

      Bu derste, bunu nasıl yapacağınız anlatıldı aslında. Hangi klasöre atacağınız nasıl okuma yapacağınız vs.

      • merhaba yoruncularında dediği gibi elimde olan bir veritabanı dosyasını androide nasıl import edebilirim

        veritabanı kendim oluşturabiliyorum ancak tek tek kayıt girmek istemiyorum bu yüzden

        dediğim gibi bişey varsa bilgilendirirseniz sevinirim.

        ayrıca emuletör çalıştığı anda hata alan arkadaşların “v1=new VeriTabani(this);” gibi bir satırı eklememiş olabilirler

  20. Selamlar,
    Android programlamaya yeni başladım.Veritabanı ile ilgili olan bu anlatımınızı okudum.Benim bir sorum olacaktı. Emülatör kullanmadan yani gerçek cihaz ile uygulamayı test ediyorum.Misal en basit haliyle ekrandaki textboxtan veriyi alıp SQLite a kaydetmeyi denedim.Fakat veritabanını cihazda mı yoksa pc ye mi kaydettiğini anlayamadım.Eclipse da File explorer ile bakınca /data klasörü altında hiçbirşey yok.Bu konuda yardımcı olur musunuz.

  21. İyi günler
    Öncelikle böyle nitelikli bir paylaşımda bulunduğunuz için teşekkür ederim. Ben KTÜ BÖTEB alanında yükseklisans yapmaktayım. Şuanda tez aşamasındayım. Androidte bir forum oluşturup öğrencilerin burdan konu ile ilgili tartışmalarını sağlamaya çalışacağım. Size birkaç sorum olacaktı yardımcı olursanız çok sevinirim. Burada oluşturduğumuz veritabanı tamamen kullanıcının telefonunda mı kalacak? Çünkü benim yapmaya çalıştığım çalışmada öğrencilerin forumdan yazdıklarını güncel olarak herkes görebilmeli ve ben hepsine ortak bir veritabanından erişebilmeliyim ki analizini yapabileyim. Sizin bu derste yapmış olduğunuz çalışma veritabanı manasında benim ihtiyacımı karşılar mı? karşılamıyorsa önerebileceğiniz bir yöntem var mı?

  22. Hocam bu içerik veritabanı içeriği ile aynı.

  23. Merhabalar hocam başka cihaza aktarılan apk dosyasının veritabanı dosyasına nasıl ulaşabilirm

Bir cevap yazın

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