[英]SQLite Android index out of bounds issue
我正在尝试在 SQLite 数据库中添加一个帖子,然后立即检索它。 我似乎正确地附加了帖子,但是在检索时出现此错误。
05-23 00:26:03.088: E/AndroidRuntime(30715): FATAL EXCEPTION: main
05-23 00:26:03.088: E/AndroidRuntime(30715): Process: com.deparesmatteo.www, PID: 30715
05-23 00:26:03.088: E/AndroidRuntime(30715): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
05-23 00:26:03.088: E/AndroidRuntime(30715): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
05-23 00:26:03.088: E/AndroidRuntime(30715): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
这些是我正在使用的方法:
public static PostEntity createPost(final PostEntity entity)
{
ContentValues values = new ContentValues();
values.put(MySQLiteOpenHelper._TITLE, entity.getPostTitle());
values.put(MySQLiteOpenHelper._DESCRIPTION, entity.getPostDesc());
values.put(MySQLiteOpenHelper._CATEGORY, entity.getPostCategory());
values.put(MySQLiteOpenHelper._IMAGEURL, entity.getPostImageURL());
long postId=database.insert(MySQLiteOpenHelper.TABLE_NAME, null, values);
Cursor cursor =database.query(MySQLiteOpenHelper.TABLE_NAME, ALL_COLUMNS, MySQLiteOpenHelper._ID+" = '"+(postId)+"'", null, null, null, null);
return getEntityFromCursor(cursor);
}
private static PostEntity getEntityFromCursor(final Cursor cursor)
{
PostEntity entity = new PostEntity(cursor.getInt(0), cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4));
return entity;
在此先感谢您的帮助!
编辑
private final static String[] ALL_COLUMNS = {MySQLiteOpenHelper._ID.toString(), MySQLiteOpenHelper._TITLE, MySQLiteOpenHelper._DESCRIPTION, MySQLiteOpenHelper._CATEGORY, MySQLiteOpenHelper._IMAGEURL};
这些是所有的列声明
MySQLiteOpenHelper 声明
public static final String TABLE_NAME = "post";
private static final String DATABASE_NAME="posts.db";
private static final int DATABASE_VERSION = 1;
public static final String _ID = "_id";
public static final String _TITLE = "title";
public static final String _DESCRIPTION = "description";
public static final String _CATEGORY = "category";
public static final String _IMAGEURL = "image";
private static final String DB_CREATE = "CREATE TABLE " + TABLE_NAME +
"(" + _ID + " integer primary key, " +
_TITLE + " text not null, "
+ _DESCRIPTION + " text not null, "
+ _CATEGORY + " text not null, "
+ _IMAGEURL + " text not null "+");";
您忘记正确访问光标。 将您的getEntityFromCursor()
更改为:
private static PostEntity getEntityFromCursor(final Cursor cursor) {
PostEntity entity = null;
if( cursor != null && cursor.moveToFirst() ) {
entity = new PostEntity( cursor.getInt(0),
cursor.getString(1),
cursor.getString(2),
cursor.getString(3),
cursor.getString(4) );
}
return entity;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.