アプリケーションとコンパイラにエラーを表示させます。何が起こったのかわかりません。クリック後にデータベースからランダムなレコードを取得して表示したい。Android SQLite Database Tutorialと stackoverflov Error のチュートリアルを使用しました:
10-30 19:19:59.533: E/AndroidRuntime(359): FATAL EXCEPTION: main
10-30 19:19:59.533: E/AndroidRuntime(359): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
10-30 19:19:59.533: E/AndroidRuntime(359): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
私のコードは次のとおりです。
public class PrzyslowiaArabskie {
private static final String TABLE_NAME = "tabela_przyslowia";
private static final String DATABASE_NAME = "przyslowiadb";
private static final int DATABASE_VERSION = 1;
public static final String KEY_ID = "id";
public static final String KEY_PRZYSLOWIE = "przyslowie";
private DbHelper myHelper;
private final Context myContext;
private SQLiteDatabase myDatabase;
private static class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +
KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_PRZYSLOWIE + " TEXT NOT NULL);" );
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
public PrzyslowiaArabskie(Context c) {
myContext = c;
}
public PrzyslowiaArabskie open() {
myHelper = new DbHelper(myContext);
myDatabase = myHelper.getWritableDatabase();
return this;
}
public void close() {
myHelper.close();
}
public String getData() {
// TODO Auto-generated method stub
String[] columns = new String[] { KEY_ID, KEY_PRZYSLOWIE };
Cursor c = myDatabase.query(TABLE_NAME, columns, KEY_ID + "=?", new String[] {String.valueOf(KEY_ID + 1)}, null, null, null);
if (c != null) {
c.moveToFirst();
String data = c.getString(1);
return data;
}
return null;
}
}
私は何を間違っていますか?
私は自分の問題で解決しました。データベースからランダムなレコードを取得する代わりに、3 つのボタン (次のレコード、前のレコード、および表示レコード) を作成します。この手順を使用します データベースから次のレコードを表示 する ご協力ありがとうございます。