Я только начинаю играть с базами данных SQLite в приложениях Android. Я пытаюсь создать таблицу «team» и таблицу «player», и я хочу, чтобы таблица «player» имела внешний ключ, который ссылается на поле auto-increment _ID таблицы команды «team» (я думаю, что это _ID-поле происходит от внедрения BaseColumns в моем классе контракта). Я думал, что синтаксис правильный, но я получаю следующее сообщение об ошибке (даже после удаления и переустановки мое приложение)Ошибка синхронизации синтаксиса SQLite 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
, и появляется ошибка. Я попытался создать только таблицу «team», и, похоже, все работает нормально. Я даже могу прочитать некоторые данные из таблицы «team» и отобразить значение в TextView. Но когда появляется таблица «игрока», все перестает работать. Я, вероятно, пропустил что-то очень очевидное, но я не могу найти его.
Любая помощь очень ценится!
Спасибо так много. У меня было ощущение, что это что-то простое. Все отлично работает сейчас! Я принял этот ответ и попытался проголосовать, но мне нужна большая репутация. Еще раз спасибо!! – JMD123
Это упоминание в документах? –