繁体   English   中英

创建SQLite Table Android时出现语法错误

[英]Syntax error while creating SQLite Table Android

我想对两个表使用外键,现在我的代码如下所示,我收到语法错误。 请解决此错误。 提前致谢

 @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE "+ DB_TABLE+" ("+
                        KEY_TBNAME + " TEXT PRIMARY KEY NOT NULL);"

        );
        db.execSQL("CREATE TABLE " + DB_TABLE_CATE + " (" +
                KEY_DETAIL + " TEXT NOT NULL, " +
                        KEY_AMOUNT + " INTEGER NOT NULL, " +
                        KEY_RESOURCE + " TEXT NOT NULL, " +
                        KEY_DATE + " TEXT NOT NULL, "+
                        KEY_TIME + " TEXT NOT NULL, " +
                       "FOREIGN KEY ("+KEY_TB_CATE+") REFERENCES "+DB_TABLE+" ("+KEY_TBNAME+");");

    }

错误...

java.lang.RuntimeException:无法启动活动ComponentInfo {app.burhani.quickaccount / app.burhani.quickaccount.HomeActivity}:android.database.sqlite.SQLiteException:靠近“;”:语法错误(代码1):,编译时:CREATE TABLE tablenamecate(详细说明TEXT NOT NULL,数量INTEGER NOT NULL,资源TEXT NOT NULL,日期TEXT NOT NULL,时间TEXT NOT NULL,FOREIGN KEY(tbnameis)参考表名(tbname);

这将是真正的查询:

CREATE TABLE DB_TABLE (  KEY_TBNAME  TEXT PRIMARY KEY NOT NULL)

CREATE TABLE  DB_TABLE_CATE  (
                KEY_DETAIL  TEXT NOT NULL,
                        KEY_AMOUNT  INTEGER NOT NULL, 
                        KEY_RESOURCE  TEXT NOT NULL, 
                        KEY_DATE  TEXT NOT NULL, 
                        KEY_TIME  TEXT NOT NULL,
                        KEY_TBNAME TEXT NOT NULL,
                       FOREIGN KEY(KEY_TBNAME) REFERENCES  DB_TABLE(KEY_TBNAME));

您必须定义KEY_TBNAME,然后设置外键。 我可以在sqlite浏览器中运行此查询,它对我有用

near ";": syntax error因为您需要两个右括号,一个用于FK列名称列表,一个用于表列列表:

... REFERENCES  DB_TABLE(KEY_TBNAME));

您还有另一个错误:FK中的KEY_TB_CATE列必须出现在列列表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM