응용 프로그램 및 컴파일러 오류를 표시합니다. 나는 무슨 일이 일어 났는지 모른다. 클릭 후 데이터베이스에서 임의의 레코드를 검색하고 표시하려고합니다. 나는 Android SQLite Database Tutorial에서와 stackoverflov 오류에서 자습서를 사용 :SQLite 데이터베이스에 문제가 있습니다.
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 개의 버튼 (다음 레코드, 이전 레코드 및 쇼 레코드)을 만듭니다. 이 지침을 사용합니다. Getting the next record into view from database 도움 주셔서 감사합니다.
이 일이 확인 널 시도 여부 확인의 0' – keyser
의 크기와 인덱스 0 요청이,'인덱스 0 0 '의 크기, 요청은 (커서가 비어있는 것을 의미한다 'null'이 아님). 따라서 특정 id + 1 행은 없습니다.이 오류는 _ 수신자가이 오류를 ^습니다. 이미이 오류를 방지하는 방법에 대한 많은 제안 사항이 있습니다. – Sam