2012-06-16 4 views
0

Я делал одну таблицу, которая имеет два внешних ключа для других таблиц. Но все же ошибка в запросе.два внешних ключа в одной таблице sqlite android

здесь код:

//inialitation attribute 
    public static final String TABLE_MATRIKPENDAPAT = "tableMatrikPendapat"; 
    public static final String MATRIK_IDKRITERIA1 = "matrikIdKriteria1"; 
    public static final String MATRIK_IDKRITERIA2 = "matrikIdKriteria2"; 
    public static final String MATRIK_NILAI = "nilaiMatrik"; 

    //create query 

    private static final String CREATE_TABLE_MATRIKPENDAPAT = "create table " 
      + TABLE_MATRIKPENDAPAT + " (" 
      + MATRIK_IDKRITERIA1 + " integer , FOREIGN KEY ("+ MATRIK_IDKRITERIA1 +") REFERENCES " 
      + TABLE_KRITERIA + " ("+ KRITERIA_ID +"), " 
      + MATRIK_IDKRITERIA2 + " integer , FOREIGN KEY ("+ MATRIK_IDKRITERIA2 +") REFERENCES " 
      + TABLE_KRITERIA + " ("+ KRITERIA_ID +"), " 
      + MATRIK_NILAI + " integer not null);"; 

И ошибка сказал:

sqlite.SQLiteException: near "matrikIdKriteria2": syntax error 

, когда я сделать это с одним внешним ключом, как здесь:

private static final String CREATE_TABLE_MATRIKPENDAPAT = "create table " 
    + TABLE_MATRIKPENDAPAT + " (" 
    + MATRIK_IDKRITERIA1 + " integer , FOREIGN KEY ("+ MATRIK_IDKRITERIA1 +") REFERENCES " 
    + TABLE_KRITERIA + " ("+ KRITERIA_ID +"), " 
    + MATRIK_NILAI + " integer not null);"; 

ошибка сказал :

sqlite.SQLiteException: возле «nilaiMatrik»: ошибка синтаксиса

, так что я думаю, мои проблемы там в запросе после первого внешнего ключа.

Какой должен быть правильный запрос? Пожалуйста, помогите мне, ребята

+0

Вы не указали все константы. Распечатайте SQL в журнале, и вы, вероятно, сами увидите проблему. Но если вы этого не сделаете, напишите _ SQL-код_, который производит Java, а не Java. – Gene

ответ

1

Это:

integer , FOREIGN 

Должно быть

integer FOREIGN 

С запятой это выглядит как еще один столбец.

Вот что у меня есть:

+ BookTableMetaData.BOOK_USER_ID + " INTEGER REFERENCES " 
    + UserTableMetaData.TABLE_NAME + "(" 
+ UserTableMetaData._ID + ")," 

Таким образом, чтобы иметь эту работу с вашим настроить

MATRIK_IDKRITERIA1 + " integer REFERENCES " 
+ TABLE_KRITERIA + " ("+ KRITERIA_ID +") 

Это может быть достаточно.

+0

Я попробовал, теперь ошибка сказала «sqlite.SQLiteException: рядом с« FOREIGN »: синтаксическая ошибка« –

+0

Oke thankyou James, теперь это работает :) –

Смежные вопросы