2011-03-13 5 views
0

3 개의 열이있는 데이터베이스를 사용하는 응용 프로그램에서 작업하고 있습니다. 내가 실행하면열이 없습니다. 오류

Cursor notesCursor = mDbHelper.getAllEntriesCursor(); 
    startManagingCursor(notesCursor); 
String[] from = new String[]{DbAdapter.KEY_NAME, DbAdapter.KEY_WINS, DbAdapter.KEY_GAMES}; 
int[] to = new int[]{R.id.names, R.id.wins, R.id.games}; 
SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.win_games, notesCursor, from, to); 
setListAdapter(notes); 

, 다음과 같은 오류가 나에게 주어집니다 : 나는이 다음을 수행하여 ListView가에 데이터베이스의 데이터를 매핑하고, 지금

public static final String KEY_ID = "_id"; 
public static final String KEY_NAME = "name"; 
public static final String KEY_GAMES = "games"; 
public static final String KEY_WINS = "wins"; 
private static final String DATABASE_CREATE = "create table " 
     + DATABASE_TABLE + " (" 
     + KEY_ID + " integer primary key autoincrement, " 
     + KEY_NAME + " text not null, " 
     + KEY_GAMES + " integer, " 
     + KEY_WINS + " integer);"; 

: 다음은 내 생성 문이다 :

java.lang.IllegalArgumentException: column 'wins' does not exist 

내가 명령 줄을 통해 에뮬레이터로 쉘 데이터베이스의 스키마를 표시, 다음이 표시됩니다

CREATE TABLE namesTable (_id integer primary key autoincrement, name text not null, games integer, wins integer); 

따라서 'wins'열이있는 것으로 나타나지만 여전히 오류가 발생합니다. 왜 이런 일이 일어나는 지 아십니까?

+0

'notesCursor'를 만드는 데 사용하는 코드를 추가하십시오. 어쩌면 틀린 표를 사용했을 수도 있습니다. – ccheneson

+0

요청에 따라 코드에 추가했습니다. – ariets

+0

재미있는 부분은'getAllEntriesCursor()'내부에있을 것입니다 - 이것이 올바른 데이터베이스인지, 오른쪽 테이블인지, 오른쪽 컬럼인지 확인하십시오. (오타의 경우) – ccheneson

답변

0

입력하신 코드는 괜찮아 보입니다. 그래서 전에 전에 smth을 놓친 것 같아서 DB에 실제로 wins 열이 없습니다. DB 작성 방법을 확인하십시오.

+0

제발 좀 더 자세히 설명해 주시겠습니까? 감사. – ariets

+0

앱 툴의 외부에서 db가 실제로'wins' 열을 가졌는지 확인할 수 있습니까? Eclipse를 사용하고 있다면 에뮬레이터에서 db 파일을 추출하고 일부 데스크탑 SQLime 뷰어를 통해 해당 내용을 볼 수 있습니다. 또한 db를 볼 수있는 명령 줄 도구가 있습니다 - http://developer.android.com/intl/zh-CN/guide/developing/tools/adb.html#sqlite. –

+0

또 다른 아이디어 - 앱에 유일한 테이블이 있습니까? 목록 어댑터를 만들기 전에 DB를 만들었습니까? –

0

private static final String DATABASE_CREATE = "create table " 
    + DATABASE_TABLE + " (" 
    + KEY_ID + " integer primary key autoincrement," 
    + KEY_NAME + " text not null," 
    + KEY_GAMES + " integer," 
    + KEY_WINS + " integer)"; 

주와 같은 열 이름 사이의 공간 분리를 데이터베이스를 작성하고 세미콜론 것을 알 (;)이 제거되었습니다.