Soru & Cevap

Android Harici Veritanından Koşullu Veri Çekme

14.12.2016 - 11:11

Herkese merhabal. Öncelikle android konusunda yeniyim. Projeme harici bir database eklemem lazım. Bunu Tuğba Üstündağın kendi sitesinde anlattığı gibi yaptım. "DB Browser for SQLite" programı ile bir veritabanı hazırladım (fotosu ekte) ve onu kendi projeme ekledim. Ve bu databaseden veri çekip listviewe yazdırabiliyorum. Bu kısmı sorunsuz bir şekilde çalıştırdım. Fakat sıkıntı yaşadığım bir konu var. Sitede anlatılan haliyle veritabanındaki tüm verileri listviewe yazdırıyor. Benim istediğim bu harici veritabanından koşullu veri çekmek. Örnek verecek olursak. Ben -soruya eklediğim fotoda görebileceğiniz gibi- "soru_id1" kolonundaki integer değerleri kullanarak ekrana sadece  "soru_id1" değeri 1den büyük 100den küçük satırları yazdırmak istiyorum. Tamamını değil. Veya bunun gibi bir kısıtlama yapabiliyor muyum? Yapabiliyorsam nasıl? Sizden ricam spesifik bir kodla cevap yazmanız. Çünkü dediğim gibi henüz çok tecrübeli değilim. Cevap yazan olursa, şimdiden çok teşekkürler...

Aşağıda verileri yazdıran method var.

 //Proje içine kopyalanmış olan veritabanımızdan verileri listviewe yazdıran metod bu ve sorunsuz çalışıyor

        SQLiteDatabase db=dbHelper.getReadableDatabase();
        String[] getColumnName={"soru, cevap"};
        Cursor imlec=db.query("sorular", getColumnName, null, null, null, null, null);
        ListView listview=(ListView)findViewById(R.id.listview);
        ArrayList<String> sorular=new ArrayList<String>();
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,sorular);

        while(imlec.moveToNext()){
            String soru_name=imlec.getString(imlec.getColumnIndex("soru"));
            String cevap_name=imlec.getString(imlec.getColumnIndex("cevap"));
            String soru_cevap= soru_name+ " "+cevap_name;
            sorular.add(soru_cevap);

        }
        listview.setAdapter(adapter);
        imlec.close();
        db.close();

    }

 

337 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-15873-1477252697.png
muhammetcagatay
15.12.2016 - 09:20

Yada şu şekilde yapabilirsin

String sql_cumlesi= "SELECT * FROM sorular WHERE soru_id<100";

        SQLiteDatabase db=dbHelper.getReadableDatabase();
     
        Cursor imlec=db.query(sql_cumlesi, null);
        ListView listview=(ListView)findViewById(R.id.listview);
        ArrayList<String> sorular=new ArrayList<String>();
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,sorular);

        while(imlec.moveToNext()){
            String soru_name=imlec.getString(imlec.getColumnIndex("soru"));
            String cevap_name=imlec.getString(imlec.getColumnIndex("cevap"));
            String soru_cevap= soru_name+ " "+cevap_name;
            sorular.add(soru_cevap);

        }
        listview.setAdapter(adapter);
        imlec.close();
        db.close();

 

Cetin
15.12.2016 - 05:13
Cevap için çok teşekkür ederim. İlk cevapla yapabildim. Ama bu şekilde de çalışıyor.
picture-87288-1481814981.jpg
aliosmanküçükk…
15.12.2016 - 12:59

yanlış anlamadıysam verileri koşullu çekmek istiyorsun.  mesela id ler 100 den küçükler gelsin sadece istiyosun? (Yanlış anlamış olabilirim).
Eğer öyleyse sorguna WHERE ile koşullarını ekleyebilirsin.
örnek: 

select * from tablo_adın WHERE id<100

senin uygulamanda sanırım şu şekilde olacak. Dener misin?

Cursor imlec=db.query("sorular", getColumnName, "soru_id1<'" + String.valueOf(100) + "'", null, null, null, null);

 

Cetin
15.12.2016 - 05:11
Çok teşekkür ederim. Cevap çok işime yaradı.