Soru & Cevap

SQLite veri çekme sorunu ...

02.12.2015 - 10:18

İyi akşamlar. Küçük bir tv izleme projem var. Veritabanındakı bilgileri listeye çekmekde sorun yaşıyorum. Uygulama kapandı hatası alıyorum.

Bu forma yazdırmam için kod parçam

    public void AddList()
    {
        final List<CustomData> chlist = new ArrayList<CustomData>();
        final ListView list = (ListView) findViewById(R.id.listView);
        CustomAdapter adapter = new CustomAdapter(this, chlist);
        if (0 < db.getCount())
        {
            for (int i = 0; i < db.getCount(); i++)
            {
                chlist.add(new CustomData(db.selectData(i, "name"), db.selectData(i, "url")));
            }
        }
        list.setAdapter(adapter);
    }

 

Bu ise DBModuledeki kod parçam

    public String selectData(int index, String column)
    {
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery("Select * From " + TABLE + " Where id=" + index, null);
        return cursor.getString(cursor.getColumnIndex(column));
    }

 

58 Görüntülenme

1 Cevap

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

picture-7541-1521024507.jpg
burhanaras
02.12.2015 - 10:50

db.rawQuery() ile dönen Cursor'ı kullanmadan önce ilk item'a gitmen gerekli.

if (cursor != null) {
   cursor.moveToFirst();
// datayi okuma islemini burada yap
}

Birden fazla sayıda kayıt dönüyorsa, yani liste gibi bir data kullanacaksan da eğer bir while() içerisinde cursor.moveToNext() ile de ilerleyebilirsin kayıtlar arasında.

Ayrıntılı bilgi için: http://developer.android.com/reference/android/database/sqlite/SQLiteCursor.html

Ali
03.12.2015 - 12:23
Teşekkürler sorun çözülmüşdür. Düzenlenmiş kodum. public String selectData(int index, String column) { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery("Select * From " + TABLE + " Where id=" + index, null); String value = ""; if (cursor.getCount() > 0) { cursor.moveToFirst(); value = cursor.getString(cursor.getColumnIndex(column)); cursor.close(); } return value; }