• Şuradasınız
  • Anasayfa
  • Android
  • 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 DİZAYNI VE TOOL İSİMLENDİRMELERİ

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.

1

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

2

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.

3

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 :

4

5

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.

6

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

VERİTABANI 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.

7

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.

8

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.

9

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

11

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.

1

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.

2

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

1

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’LARI İD DEĞERLERİ İLE EŞLEŞTİRME

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.

3

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.

2

 

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

KAYDET BUTONU ALTINDA KODLARIN YAZILMASI

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.

4

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

5

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.

6

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

8

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.

1

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

Şimdi kayitEkle() metodunu dolduralım.

2

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

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

EKRAN ÇIKTILARI

1 2 3

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.

1

SQLite PROFESSIONAL İLE VERİTABANINDAKİ BİLGİLERİN GÖSTERİLMESİ

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

4

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.

7

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.

9

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.

1

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

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

2

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

3

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

4

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

Benzer Yazılar

Yorumlar

  • halil ibrahim , 01 Eylül 2013 - 18:29

    mehmet bey. çok teşekkürler.

    Cevapla
  • Nazım BÜTÜN , 10 Ekim 2013 - 22:42

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

    Cevapla
  • serpil , 01 Ocak 2014 - 23:34

    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?

    Cevapla
    • Mehmet Kirazlı , 02 Ocak 2014 - 09:19

      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

      Cevapla
  • gökalp demir , 05 Ocak 2014 - 00:26

    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

    Cevapla
    • Mehmet Kirazlı , 05 Ocak 2014 - 18:27

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

      Cevapla
      • gökalp demir , 06 Ocak 2014 - 01:40

        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

        Cevapla
        • Mehmet Kirazlı , 06 Ocak 2014 - 07:31

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

          Cevapla
          • gökalp demir , 06 Ocak 2014 - 11:25

            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

          • Mehmet Kirazlı , 06 Ocak 2014 - 11:31

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

  • ufuk , 08 Ocak 2014 - 11:36

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

    Cevapla
  • Kemal , 31 Ocak 2014 - 16:22

    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.

    Cevapla
  • buket , 17 Mart 2014 - 21:47

    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?

    Cevapla
  • mustafa akan , 14 Nisan 2014 - 01:38

    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

    Cevapla
  • hakan , 11 Haziran 2014 - 15:35

    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?

    Cevapla
  • Emre , 24 Haziran 2014 - 14:11

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

    Cevapla
  • Emre Er , 08 Temmuz 2014 - 12:47

    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.

    Cevapla
  • Köksal , 09 Temmuz 2014 - 17: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.

    Cevapla
  • Muhammed , 15 Temmuz 2014 - 00:36

    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

    Cevapla
  • EMRE , 22 Temmuz 2014 - 14:08

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

    Cevapla
  • Damla , 06 Ağustos 2014 - 16:50

    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.

    Cevapla
  • Ali Rıza , 07 Ağustos 2014 - 13:15

    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.

    Cevapla
    • Mehmet Kirazlı , 07 Ağustos 2014 - 13:35

      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

      Cevapla
      • Ali Rıza , 07 Ağustos 2014 - 13:46

        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.

        Cevapla
  • ugrugr , 03 Eylül 2014 - 16:11

    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 ?

    Cevapla
  • fatih , 11 Eylül 2014 - 11:01

    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.

    Cevapla
  • Deniz , 13 Eylül 2014 - 16:07

    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.

    Cevapla
    • Mehmet Kirazlı , 15 Eylül 2014 - 08:30

      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.

      Cevapla
      • memet , 09 Aralık 2014 - 19:02

        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

        Cevapla
  • mehmet , 29 Eylül 2014 - 03:34

    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.

    Cevapla
  • ibrahim arslan , 26 Ekim 2014 - 19:16

    İ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ı?

    Cevapla
  • Sadık , 13 Şubat 2015 - 09:21

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

    Cevapla
  • Yeşim , 18 Temmuz 2016 - 15:50

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

    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