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