Android光标移动到第一个不填充数据库

Android光标移动到第一个不填充数据库,android,sqlite,Android,Sqlite,我对Android开发和整个开发都是相当陌生的。我有一个程序,我正在尝试排除故障。我认为我已将问题隔离到以下代码: ArrayList<RSSItem> arrayrssitems = new ArrayList<RSSItem>(); dataAdapter = new DBAdaptor(this); dataAdapter.open(); mCursor = dataAdapter.getRssItems(dataAdapter

我对Android开发和整个开发都是相当陌生的。我有一个程序,我正在尝试排除故障。我认为我已将问题隔离到以下代码:

ArrayList<RSSItem> arrayrssitems = new ArrayList<RSSItem>();
    dataAdapter = new DBAdaptor(this);
    dataAdapter.open();
    mCursor = dataAdapter.getRssItems(dataAdapter
            .getChannelIdFromLink(channelLink));
    if (mCursor.moveToFirst()) {
        do {
            item = new RSSItem();
            item.setId(mCursor.getInt(mCursor
                    .getColumnIndex(DBAdaptor.RSSITEM_FIELD_ID)));
            item.setContent(mCursor.getString(mCursor
                    .getColumnIndex(DBAdaptor.RSSITEM_FIELD_CONTENT)));
            item.setDescription(mCursor.getString(mCursor
                    .getColumnIndex(DBAdaptor.RSSITEM_FIELD_DESCRIPTION)));
            item.setImage(mCursor.getString(mCursor
                    .getColumnIndex(DBAdaptor.RSSITEM_FIELD_IMAGE)));
            item.setPubdate(Common.changeFormatDate(mCursor.getString(mCursor
                    .getColumnIndex(DBAdaptor.RSSITEM_FIELD_PUBDATE))));
            item.setLink(mCursor.getString(mCursor
                    .getColumnIndex(DBAdaptor.RSSITEM_FIELD_LINK)));
            item.setRead(Integer.parseInt(mCursor.getString(mCursor
                    .getColumnIndex(DBAdaptor.RSSITEM_FIELD_READ))));
            item.setTitle(mCursor.getString(mCursor
                    .getColumnIndex(DBAdaptor.RSSITEM_FIELD_TITLE)));
            arrayrssitems.add(item);
            // do what ever you want here
        } while (mCursor.moveToNext());
    }
    mCursor.close();

我觉得你的代码很好。你确定你的光标包含记录吗?尝试打印mCursor.getCount,看看它返回什么值。语法正常。您的光标没有任何行。发布一些相关的查询代码和数据以获得帮助。我做了一些进一步的挖掘,并能够验证getChannel方法是否会在计数时返回-1;确切地说是吗?发现最后一行是where语句。出于某种原因,它没有归还任何东西。我将其注释掉,并在最后一行添加一个空值。这句话并没有限制搜索。这是有效的选择*。
public Cursor getChannel(String link){
    return db.query(DBAdaptor.CHANNELS_TABLE, 
            new String[] {
                            CHANNEL_FIELD_ID, 
                            CHANNEL_FIELD_TITLE, 
                            CHANNEL_FIELD_LINK,
                            CHANNEL_FIELD_DESCRIPTION,
                            CHANNEL_FIELD_LASTUPDATED
                         }, 
            CHANNEL_FIELD_LINK + " = '" + link + "'",
            null,null,null,null);
}


public long insertChannel(RSSChannel channel){
    ContentValues values = new ContentValues();
    values.put(CHANNEL_FIELD_TITLE,channel.getTitle());
    values.put(CHANNEL_FIELD_LINK,channel.getLink());
    values.put(CHANNEL_FIELD_DESCRIPTION,channel.getDescription());
    values.put(CHANNEL_FIELD_LASTUPDATED,channel.getLastupdated());
    return db.insert(DBAdaptor.CHANNELS_TABLE, null, values);
}
public