SQLite 使用外键
SQLite using foreign key
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);
我试图改变这个,这样我就可以 link 用户名的两个表(否则我每次都必须 运行 查询来查找用户的用户名,并且用户名是唯一的所以我的数据库中不可能有两个,这是通过检查我的应用程序来防止的)。但是 1) 它不再工作了,我的数据库创建语句的最后三行可能不正确,有人可以检查一下吗?
而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):
您似乎在第一个 运行 之后添加了该列。
然后卸载并重新安装您的应用程序,将添加新列。
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);
我试图改变这个,这样我就可以 link 用户名的两个表(否则我每次都必须 运行 查询来查找用户的用户名,并且用户名是唯一的所以我的数据库中不可能有两个,这是通过检查我的应用程序来防止的)。但是 1) 它不再工作了,我的数据库创建语句的最后三行可能不正确,有人可以检查一下吗?
而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):
您似乎在第一个 运行 之后添加了该列。
然后卸载并重新安装您的应用程序,将添加新列。