Android SQLite外键语法错误

Android SQLite外键语法错误,第1张

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

我刚刚开始在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”表时,事情就停止了工作,我可能会丢失一些非常明显的东西,但我似乎找不到它.

任何帮助是极大的赞赏!

解决方法:

首先声明所有列,然后在最后一列之后放置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));
总结

以上是内存溢出为你收集整理的Android SQLite外键语法错误全部内容,希望文章能够帮你解决Android SQLite外键语法错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1211195.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存