に最後に追加されたアイテムを読み取ろうとしていますSQLiteDatabase
が、メソッドCursorIndexOutOfBoundsException
を使用しようとすると が表示されます。moveToLast()
文字列は .xml でデータベースに追加されFragment
ます。文字列が追加されると、追加された最後のアイテムで Toast を作成するクラス ( Activity
/ではない) を分離します。Fragment
コードは次のとおりです。
フラグメント内:
HistoryDataBaseSQL mDbHelper = new HistoryDataBaseSQL(getActivity()); // This gets access to my SQL
SQLiteDatabase db = mDbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(ConstructData.COLUMN_NAME_ENTRY_ID, counter);
values.put(ConstructData.COLUMN_NAME_TITLE, content_title); // content_title is a variable
これは私のヘルパー クラスの一部です。
public static abstract class ConstructData implements BaseColumns {
public static final String TABLE_NAME = "history";
public static final String COLUMN_NAME_ENTRY_ID = "entryid";
public static final String COLUMN_NAME_TITLE = "title";
これは私のデータベースクラスです:
public class HistoryDataBaseSQL extends SQLiteOpenHelper {
// If you change the database schema, you must increment the database version.
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "history.db";
private static final String TEXT_TYPE = " TEXT";
private static final String COMMA_SEP = ",";
private static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + ConstructData.TABLE_NAME + " (" +
ConstructData._ID + " INTEGER PRIMARY KEY," +
ConstructData.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP +
ConstructData.COLUMN_NAME_TITLE + TEXT_TYPE +
// Any other options for the CREATE command, rem to add comma_sep to split
" )";
public HistoryDataBaseSQL(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_ENTRIES);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onCreate(db);
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onUpgrade(db, oldVersion, newVersion);
}
}
これは、次のものを作成しようとするクラスですToast
。
HistoryDataBaseSQL mDbHelper = new HistoryDataBaseSQL(getContext); // This gets access to my SQL
SQLiteDatabase db = mDbHelper.getReadableDatabase();
String[] projection = {
ConstructData._ID,
ConstructData.COLUMN_NAME_TITLE
};
Cursor c = db.query(
ConstructData.TABLE_NAME,
projection,
null,
null,
null,
null,
null
);
c.moveToLast();
String string = null;
string = c.getString(c.getColumnIndexOrThrow(ConstructData.COLUMN_NAME_TITLE)); // If I comment this out, there is not exception
Toast.makeText(getContext, "Title is: " + string, Toast.LENGTH_SHORT).show();
c.close();