2013-06-02 3 views
0

이 내 방식 최고 점수 가까운 힘을 얻을 때선택 커서 SQL이

public void highscore(){ 

     Cursor gethighscorealter = highscoreDB.rawQuery("SELECT MIN(TIME) FROM HIGHSCORE3;" 
        , null); 
     gethighscorealter.moveToFirst(); 
     if(gethighscorealter!=null){ 
      timer= gethighscorealter.getInt(gethighscorealter.getColumnIndex("TIME")); 
      move = gethighscorealter.getInt(gethighscorealter.getColumnIndex("MOVE")); 
      grid = gethighscorealter.getInt(gethighscorealter.getColumnIndex("GRID")); 
      highscoreview(); 
     } 
    } 

그들이 행 0 COL 말했다

06-02 13:30:38.599: E/AndroidRuntime(32416): FATAL EXCEPTION: main 
06-02 13:30:38.599: E/AndroidRuntime(32416): java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. 
06-02 13:30:38.599: E/AndroidRuntime(32416): at android.database.CursorWindow.nativeGetLong(Native Method) 
06-02 13:30:38.599: E/AndroidRuntime(32416): at android.database.CursorWindow.getLong(CursorWindow.java:507) 
06-02 13:30:38.599: E/AndroidRuntime(32416): at android.database.CursorWindow.getInt(CursorWindow.java:574) 
06-02 13:30:38.599: E/AndroidRuntime(32416): at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:69) 
06-02 13:30:38.599: E/AndroidRuntime(32416): at skripsi.slidame.PuzzleActivity.highscore(PuzzleActivity.java:253) 
06-02 13:30:38.599: E/AndroidRuntime(32416): at skripsi.slidame.PuzzleActivity.onOptionsItemSelected(PuzzleActivity.java:131) 

이 내 로그 고양이 - 1 ?? 난

답변

1

이 오류가 발생하는 이유는 쿼리 만 TIME 열을 반환하는 것입니다. 원하는 모든 열을 반환하려면 쿼리를 SELECT MIN(TIME), MOVE, GRID FROM HIGHSCORE3;으로 수정해야합니다.

희망이 도움이됩니다. :)

+0

thx 내가 w3schools.com에서 테스트했을 때 나는 단지 1 개의 열이 선택된 것을 본다. 그래서 ASC에 의한 순서를 사용하고있다. 그리고 나는 그 테이블에서 최소한의 값을 얻었다. 그러나 이제는 최소값을 얻는다. 2 열 매개 변수'TIME'과'MOVE' – user2375628

+0

나는 '최고 (time), min (move) from highscore3'을 얻었지만, 평소와 같이 호출 이름 열을'getnameindex (0)'해야합니다. 나는 w3school.com 열 이름이'expr1000'으로 바뀌는 것을 보았습니다. – user2375628

0

변경하시기 바랍니다 이해하지 못할 테이블의 열 time의 이름을 가져 와서 그 이후에 데이터를 검색하십시오. 이 키는 이미 database schema 안에 저장되어 있기 때문입니다. 열 이름을 변경하고 다시 확인하십시오. 나는 그것이 잘 작동되기를 바랍니다.

0

나는 두꺼운 커서가 다음 던져 예외를 계산되지 않습니다

Cursor gethighscorealter = highscoreDB.rawQuery("SELECT MIN(TIME) FROM HIGHSCORE3;" 
       , null); 

    if(gethighscorealter.getCount() > 0){ 
     gethighscorealter.moveToFirst(); 
     timer= gethighscorealter.getInt(gethighscorealter.getColumnIndex("TIME")); 
     move = gethighscorealter.getInt(gethighscorealter.getColumnIndex("MOVE")); 
     grid = gethighscorealter.getInt(gethighscorealter.getColumnIndex("GRID")); 
     highscoreview(); 
     gethighscorealter.close(); 

    }