마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

sqlite에 데이터를 입력했는데 제대로 불러와지지 않습니다

0 추천
public void insert(int citynum, String city, String country, int game, int win, int top, int top4) {
    SQLiteDatabase db = getWritableDatabase();
    String sql = "INSERT INTO STAT(citynum, city, country, game, win, top, top4)" + " VALUES (" + citynum + ", '" + city + "', '" + country + "', " + game + ", " + win + ", " + top + ", " + top4 + ");";
    db.execSQL(sql);
    db.close();
위가 데이터를 삽입하는 코드입니다. insert()메소드를 통해서 100개가량의데이터를 집어넣었습니다.
dbHelper = new DBHelper(this, dbName, null, dbVersion);
db = dbHelper.getWritableDatabase();
sql = "SELECT * FROM stat";

cursor = db.rawQuery(sql, null);
cursor.moveToPosition(10);
int test = cursor.getInt(7);
Toast.makeText(this, String.valueOf(test), Toast.LENGTH_LONG ).show();
​이후 데이터 확인을 위해서 onCreate에서 위의 코드를 실행되게 했습니다. 그럼 7번재줄의 int가 토스트로 떠야하는데 "int test = cursor.getInt(7)에서 CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0​가 뜹니다. 제 추측에는 데이터 삽입할때 뭔가 문제가 생겨서 테이블이 젣제대로 안생긴거 같은데, 어디가 문젠지 잘 모르겠어서 질문드립니다 ㅠㅠ
참고로 테이블 생성은 다음과 같습니다..
public void onCreate(SQLiteDatabase db) {

    db.execSQL("CREATE TABLE STAT (_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "citynum INTEGER, city TEXT, country TEXT, game INTEGER, win INTEGER, top INTEGER, top4 INTEGER);");

}
또 insert메소드 사용은 다음과 같이 했습니다.
insert(1, "Seoul", "Korea", 0, 0, 0, 0);
insert(2, "Busan", "Korea", 0, 0, 0, 0);
insert(3, "Tokyo", "Japan", 0, 0, 0, 0); ... 반복
PlzHelpME 님이 2018년 1월 3일 질문
table 을 create 할 때는 STAT 인데 select 에서는 stat 네요?
moveToPosition(10)은 10행 조회인데 id값이 primary key이면 데이터가 얼마나 있을지 모르지만 10번째 행이 없어서 그럴수도 있지 않을까요?
_id  에 autoincrement 주셨는데
insert 할때 강제적으로 int 주시지 마시고 그냥 null 주시면 자동으로 증가합니다.
data 제대로 적용되었는지 확인은 cursor.getCount로 insert가 제대로 되었는지  확인 하심대구요.

데이터 조회는
while(cursor.moveToNext()){
    //int test = cursor.getInt(0);
     /int test2 = cursor.getInt(1);
                       .
                       .
                       .
}
하심되겟네요.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...