Android 中的 SQLite - CREATE TABLE 中的语法错误
SQLite in Android - Syntax Error in CREATE TABLE
我开发 Android 应用程序已有一段时间,最近开始为该应用程序制作数据库。也就是说,我目前的 CREATE TABLE
命令有问题。通过 SQL fiddle 我有 运行 这些,它似乎不认为有问题,但 Eclipse 有。
CREATE TABLE team (_id INTEGER PRIMARY KEY ,
teamName TEXT ,
teamYear TEXT ,
teamLevel TEXT )
CREATE TABLE matchs (_id INTEGER PRIMARY KEY ,
oponentName TEXT ,
matchDate TEXT ,
teamId INTEGER NOT NULL ,
FOREIGN KEY (teamId) REFERENCES team (_id ))
CREATE TABLE matchSet (_id INTEGER PRIMARY KEY ,
setNumber TEXT ,
matchId INTEGER NOT NULL ,
FOREIGN KEY (matchId) REFERENCES matchs (_id ))
CREATE TABLE player (_id INTEGER PRIMARY KEY ,
playerNumber TEXT ,
playerPosition TEXT ,
playerFirstName TEXT ,
playerLastName TEXT ,
playerNickname TEXT ,
playerPic TEXT ,
playerTagline TEXT ,
teamId INTEGER NOT NULL ,
FOREIGN KEY (teamId) REFERENCES team (_id ))
CREATE TABLE par (_id INTEGER PRIMARY KEY ,
action TEXT ,
result TEXT ,
playerId INTEGER NOT NULL ,
FOREIGN KEY (playerId) REFERENCES player (_id ) ,
setId INTEGER NOT NULL ,
FOREIGN KEY (setId) REFERENCES matchSet (_id ))
CREATE TABLE stats (_id INTEGER PRIMARY KEY ,
playerId INTEGER NOT NULL ,
FOREIGN KEY (playerId) REFERENCES player (_id ) ,
setId INTEGER NOT NULL ,
FOREIGN KEY (setId) REFERENCES matchSet (_id ) ,
attackKill TEXT ,
attackError TEXT ,
attackTotal TEXT ,
attackPercentage TEXT ,
setAssist TEXT ,
serveAce TEXT ,
serveError TEXT ,
serveZero TEXT ,
passRating TEXT ,
blockSolo TEXT ,
blockAssist TEXT ,
blockError TEXT ,
genBhe TEXT ,
pts TEXT )
在 setId
外键附近创建 par table 时引发错误。非常感谢任何帮助。
将 FOREIGN KEY
约束放在 CREATE TABLE
的末尾。
将上面使用 SQL 的 Fiddle 与此 working demo 进行比较。
第一个返回错误:
could not prepare statement (1 near "setId": syntax error)
我开发 Android 应用程序已有一段时间,最近开始为该应用程序制作数据库。也就是说,我目前的 CREATE TABLE
命令有问题。通过 SQL fiddle 我有 运行 这些,它似乎不认为有问题,但 Eclipse 有。
CREATE TABLE team (_id INTEGER PRIMARY KEY ,
teamName TEXT ,
teamYear TEXT ,
teamLevel TEXT )
CREATE TABLE matchs (_id INTEGER PRIMARY KEY ,
oponentName TEXT ,
matchDate TEXT ,
teamId INTEGER NOT NULL ,
FOREIGN KEY (teamId) REFERENCES team (_id ))
CREATE TABLE matchSet (_id INTEGER PRIMARY KEY ,
setNumber TEXT ,
matchId INTEGER NOT NULL ,
FOREIGN KEY (matchId) REFERENCES matchs (_id ))
CREATE TABLE player (_id INTEGER PRIMARY KEY ,
playerNumber TEXT ,
playerPosition TEXT ,
playerFirstName TEXT ,
playerLastName TEXT ,
playerNickname TEXT ,
playerPic TEXT ,
playerTagline TEXT ,
teamId INTEGER NOT NULL ,
FOREIGN KEY (teamId) REFERENCES team (_id ))
CREATE TABLE par (_id INTEGER PRIMARY KEY ,
action TEXT ,
result TEXT ,
playerId INTEGER NOT NULL ,
FOREIGN KEY (playerId) REFERENCES player (_id ) ,
setId INTEGER NOT NULL ,
FOREIGN KEY (setId) REFERENCES matchSet (_id ))
CREATE TABLE stats (_id INTEGER PRIMARY KEY ,
playerId INTEGER NOT NULL ,
FOREIGN KEY (playerId) REFERENCES player (_id ) ,
setId INTEGER NOT NULL ,
FOREIGN KEY (setId) REFERENCES matchSet (_id ) ,
attackKill TEXT ,
attackError TEXT ,
attackTotal TEXT ,
attackPercentage TEXT ,
setAssist TEXT ,
serveAce TEXT ,
serveError TEXT ,
serveZero TEXT ,
passRating TEXT ,
blockSolo TEXT ,
blockAssist TEXT ,
blockError TEXT ,
genBhe TEXT ,
pts TEXT )
在 setId
外键附近创建 par table 时引发错误。非常感谢任何帮助。
将 FOREIGN KEY
约束放在 CREATE TABLE
的末尾。
将上面使用 SQL 的 Fiddle 与此 working demo 进行比较。
第一个返回错误:
could not prepare statement (1 near "setId": syntax error)