Android Dersleri

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.

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ığı.

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.

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 :

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.

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.

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.

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.

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

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.

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.

Ş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.

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.

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.

 

Ş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.

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

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.

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

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.

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

Şimdi kayitEkle() metodunu dolduralı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ı

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.

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

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.

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.

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.

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

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

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

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

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.

Yorumları Göster

  • Ü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.

    • Bu derdi ben de zamanında yaşadığım için biliyorum neler hissettiğinizi. Rica ederim kolay gelsin.

  • 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

  • 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

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

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

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

    • File explorer de data klasörü yok mu ? Emulator acıkken yapacaksınız ve emulatorun uzerıne tıklayacaksınız DDMS de

      • data klasöru var ama lib dosyası çıkıyor sqliteopenhelper sınıfı eclipse in onu database olarak yorumlamasına yetmiyor mu anlamadım.

        • ne demek istediğinizi anlamadım. Data klasörünün içinde veritabanının olmadığına dair o ekranın resmini çekip mail olarak atın.

  • 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

    • hocam eğer kodu çalıştırmadan önce hata vermiyorsa sorun değil. Uygulama çalışmıyor mu ?

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

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