1
public void addFavourite(User user,Winkel winkel){
ContentValues values = new ContentValues();
values.put(COLUMN_NAME,winkel.getNaam());
values.put(COLUMN_POSTCODE, winkel.getPostcode());
values.put(COLUMN_DEELGEMEENTE, winkel.getDeelGemeente());
values.put(COLUMN_GEMEENTE, winkel.getGemeente());
values.put(COLUMN_ADRES, winkel.getAdres());
Log.d("lol",user.getUserName()); // Log is succesfull
values.put(COLUMN_USERNAME, user.getUserName());
SQLiteDatabase db = this.getWritableDatabase();
db.insert(TABLE_FAVOURITES, null, values);
db.close();
}
public void deleteFavourite(User user,Winkel winkel){
String selectQuery = "DELETE FROM " + TABLE_FAVOURITES + " WHERE " + COLUMN_USERNAME+"=" + user.getUserName() + " AND " + COLUMN_NAME + "=" + winkel.getNaam();
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL(selectQuery);
db.close();
}
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);
お気に入りを削除しようと
SQLの例外:SQLlite - DELETEコマンドではそのような列
android.database.sqlite.SQLiteException: no such column: Gebruikersnaam (code 1): , while compiling: DELETE FROM favorieten WHERE username=Gebruikersnaam AND naam=EUROCITY
注:私は仮定しているいずれかのお気に入りを追加するときに何かが間違っている、と実際のユーザ名テーブルに追加されない、または私の作成テーブルのステートメントで何か間違っている、または私のdeletequeryの何かが間違ってtheres。私は何を理解することはできません。なぜこれは機能しないのですか?
。私は: 'どこのユーザー名= 'Gebruikersnaam'とnaam = 'EUROCITY'' –
あなたはあなたの値の引用符を忘れてしまった。しかし、実際にはPrepared Statementsを使うべきです。 –
@juergendはい、バインドされたパラメータがうまく動作します。 1つ以上のアポストロフィ( '' '=>' '' ')を含む文字列の場合は、単一引用符を倍にして扱います。 –