あなたの問題は、 column_constraintを混同していることです table_constraintを使用した構文 構文( つまり、前者を使用する必要がある場合に後者をコーディングします 。
を使用して問題を修正できます
db.execSQL("CREATE TABLE " + QUEST_TABLE_NAME + "(id INTEGER primary key autoincrement NOT NULL, name TEXT, description TEXT, expValue INTEGER, category INTEGER NOT NULL REFERENCES categories (id), date TEXT");
以下で説明するように、代替構文も同様です。
つまり、列制約の構文は REFERENCES ....
で始まります。 これは列定義の一部です(つまり、列名は暗黙的です)が、table_constraint構文は FORIEGN KEY(column_name) REFERENCES ...
で始まります。 列の定義に従います
だからあなたはどちらかを持つことができます:-
Column_constraint構文
-
列定義の一部として
-
category INTEGER NOT NULL REFERENCES categories (id)
例:
CREATE TABLE yourtablename (id INTEGER primary key autoincrement NOT NULL, name TEXT, description TEXT, expValue INTEGER, category INTEGER NOT NULL REFERENCES categories (id), date TEXT)
または
Table_constraint構文
-
列が定義された後でも、列定義内、つまり角かっこ内にあります。
-
FOREIGN KEY (category) REFERENCES categories (id)
例
CREATE TABLE yourtablename (id INTEGER primary key autoincrement NOT NULL, name TEXT, description TEXT, expValue INTEGER, category INTEGER NOT NULL, date TEXT, FOREIGN KEY (category) REFERENCES categories (id));
column-constraint
が見つかる場合があります および
日付 列名にすることができます。ただし、列名としてdateなどのSQLiteキーワードを使用しないことをお勧めします。