String CREATE_FAVOURITES_TABLE = "CREATE TABLE IF NOT EXISTS " +
TABLE_FAVOURITES + "("
+ COLUMN_ID2 + " INTEGER PRIMARY KEY,"
+ COLUMN_NAME + " TEXT,"
+ COLUMN_POSTCODE + " INTEGER,"
+ COLUMN_DEELGEMEENTE + " TEXT,"
+ COLUMN_GEMEENTE + " TEXT,"
+ COLUMN_ADRES + " TEXT,"
+ COLUMN_USERNAME + " TEXT, "
+ "FOREIGN KEY(" + COLUMN_USERNAME+ ") REFERENCES "
+ TABLE_USERS + "(username) " + ")";
db.execSQL(CREATE_FAVOURITES_TABLE);
Я попытался изменить это, чтобы связать две таблицы по имени пользователя (в противном случае я должен запускать запрос, чтобы каждый раз находить имя пользователя, а имена пользователей уникальны, поэтому невозможно поскольку в моей базе данных должно быть два, это предотвращает проверка в моем приложении). Но 1) он больше не работает, последние три строки моего заявления о создании базы данных, вероятно, неверны, может ли кто-нибудь проверить это?SQLite с использованием внешнего ключа
И 2) Я хочу, чтобы найти все избранные для одного пользователя по имени пользователя, поэтому я написал этот кусок кода:
public void findFavourites(User user,Winkel winkel){
String selectQuery = "SELECT" + COLUMN_NAME +"," + COLUMN_ADRES + "," + COLUMN_GEMEENTE + "," + COLUMN_DEELGEMEENTE + "," + COLUMN_POSTCODE;
selectQuery += "FROM" + TABLE_USERS + "," +TABLE_FAVOURITES;
selectQuery += "WHERE"+ COLUMN_ID+"=" +COLUMN_ID + "AND";
}
Опять же, последняя строка, вероятно, неправильно, потому что я не могу понять как заставить внешние ключи работать (они работали до этого, но потом я попытался их изменить, так что имя пользователя будет использоваться как внешний ключ, а не id).
Сообщение об ошибке:
SQLiteException: table favorieten has no column named username (code 1):
Это сделало трюк, спасибо. – user3117628
Я сделал, спасибо :) – user3117628