2013-06-09 3 views
3

저는 Android 앱에서 SQLite 데이터베이스로 놀기 시작했습니다. '팀'테이블과 '플레이어'테이블을 만들려고하는데 'player'테이블에 '팀'테이블의 자동 증가 _ID 필드를 참조하는 외래 키가 있어야합니다 (이 _ID 필드 내 계약 클래스에서 BaseColumns 구현에서 온다.) 나는 구문이 올 줄 알았는데하지만 난Android SQLite 외래 키 구문 오류

06-08 20:26:22.763: E/Database(29843): Failure 1 (near "playerName": syntax error) on 0x22a110 when preparing 'CREATE TABLE player (_id INTEGER PRIMARY KEY,team_ID INTEGER, FOREIGN KEY(team_ID) REFERENCES team(_id), playerName TEXT,playerAge INTEGER,playerPosition TEXT,playerHeight REAL,playerWeight REAL,playerPhoto TEXT,playerNumber INTEGER)'. 

오류가 위 통과하려고 끝 SQL 문이다 (심지어 내 응용 프로그램을 제거하고 다시 설치 후) 다음과 같은 오류가 발생합니다. 이것은 (미안 그것은 불필요하게 장황, 난이 튜토리얼 다음되었다) SQL 문을 만들기위한 코드입니다 :

private static final String SQL_CREATE_ENTRIES = "CREATE TABLE " 
     + TeamTable.TABLE_NAME + " (" + TeamTable._ID 
     + " INTEGER PRIMARY KEY," + TeamTable.COLUMN_NAME_TEAM_NAME 
     + TEXT_TYPE + COMMA_SEP + TeamTable.COLUMN_NAME_TEAM_WINS 
     + TEXT_TYPE + COMMA_SEP + TeamTable.COLUMN_NAME_TEAM_LOSSES 
     + TEXT_TYPE + COMMA_SEP + TeamTable.COLUMN_NAME_TEAM_LOGO 
     + TEXT_TYPE + ")"; 

private static final String SQL_CREATE_ENTRIES_2 = "CREATE TABLE " 
     + PlayerTable.TABLE_NAME + " (" + PlayerTable._ID 
     + " INTEGER PRIMARY KEY," + "team_ID INTEGER, " 
     + "FOREIGN KEY(team_ID) REFERENCES team(_id), " 
     + PlayerTable.COLUMN_NAME_PLAYER_NAME + TEXT_TYPE + COMMA_SEP 
     + PlayerTable.COLUMN_NAME_PLAYER_AGE + " INTEGER" + COMMA_SEP 
     + PlayerTable.COLUMN_NAME_PLAYER_POSITION + TEXT_TYPE + COMMA_SEP 
     + PlayerTable.COLUMN_NAME_PLAYER_HEIGHT + " REAL" + COMMA_SEP 
     + PlayerTable.COLUMN_NAME_PLAYER_WEIGHT + " REAL" + COMMA_SEP 
     + PlayerTable.COLUMN_NAME_PLAYER_PHOTO + TEXT_TYPE + COMMA_SEP 
     + PlayerTable.COLUMN_NAME_PLAYER_NUMBER + " INTEGER" + ")"; 

가 그럼 난 execSQL(SQL_CREATE_ENTRIES)execSQL(SQL_CREATE_ENTRIES_2 사용하고 오류가 나타납니다. 나는 '팀'테이블 만 만들려고했는데 제대로 작동하는 것 같습니다. 심지어 '팀'테이블에서 일부 데이터를 읽고 TextView에 값을 표시 할 수 있습니다. 그러나 '플레이어'테이블이 도입되면 일이 중단됩니다. 나는 아마 아주 명백한 무엇인가 놓치고있다. 그러나 나는 그것을 발견하는 것처럼 보일 수 없다.

도움을 주시면 대단히 감사하겠습니다.

답변

4

먼저 모든 열을 선언하고 마지막 열 뒤에 FOREIGN KEY(team_ID) REFERENCES team(_id)을 넣습니다.

CREATE TABLE player 
(_id INTEGER PRIMARY KEY, 
team_ID INTEGER, 
playerName TEXT, 
playerAge INTEGER, 
playerPosition TEXT, 
playerHeight REAL, 
playerWeight REAL, 
playerPhoto TEXT, 
playerNumber INTEGER, 
FOREIGN KEY(team_ID) REFERENCES team(_id)); 
+0

당신에게 너무 감사처럼

그래서 마지막 쿼리입니다. 이런 느낌이 들었어. 상황이 잘되고 있습니다! 이 답변을 수락하고 투표를 시도했지만 더 많은 평판이 필요합니다. 다시 한 번 감사드립니다! – JMD123

+0

이 문서에 언급되어 있습니까? –