android sqlite 用外键关联,Android SQLite外键语法错误

博主在尝试在Android应用程序中使用SQLite数据库创建`团队`和`球员`表时遇到了外键引用错误。他们试图在`球员`表中设置一个外键,该外键引用`团队`表的自动递增_ID字段,但在执行SQL创建语句时遇到了语法错误。问题出现在`FOREIGN KEY`的定义上。虽然`团队`表创建成功并能读取数据,但添加`球员`表时出现了问题。他们寻求帮助来解决这个明显的语法错误。
摘要由CSDN通过智能技术生成

我刚刚开始在Android应用程序中使用SQLite数据库.我正在尝试制作“团队”表和“玩家”表,并且我希望“玩家”表具有外键,该外键引用“团队”表的自动递增_ID字段(我认为此_ID字段来自在我的合同类中实现BaseColumns).我以为语法正确,但出现以下错误(即使在卸载并重新安装我的应用程序之后)

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中显示该值,但是当引入“ player”表时,事情就停止了工作,我可能会丢失一些非常明显的东西,但我似乎找不到它.

任何帮助是极大的赞赏!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值