La requête sqlite suivante ne supprime pas les ID commençant par zéro.
Structure Android Sqlite Table
String CREATE_TABLE_BUS = "CREATE TABLE " + TABLE_BUS + "("
+ KEY_TID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ KEY_BUS_NUM + " TEXT,"
+ KEY_BUS_NAME + " TEXT,"
+ KEY_FROM + " TEXT,"
+ KEY_TO + " TEXT,"
+ KEY_TYPE + " TEXT"
+ ")";
db.execSQL(CREATE_TABLE_BUS);
J'ai conservé BUS_NUM en tant que texte et non en tant qu'int.
Et c'est la fonction que j'appelle pour supprimer une ligne ..
public void Delete_Bus(String bus_num) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_BUS, KEY_BUS_NUM+"="+bus_num , null);
Log.e("deleting bus num", bus_num);
db.close(); // Closing database connection
}
Ce code fonctionne très bien quand le code ne commence pas par zéro.
Cela fonctionne pour 76555 et non pour 09877. Quel est le problème avec mon code
La requête générée par ce code se termine comme ceci:
DELETE FROM BusTable WHERE BusNum = 012345
La base de données interprétera cela comme un nombre, pas une chaîne.
En SQL, les chaînes doivent être citées:
DELETE FROM BusTable WHERE BusNum = '012345'
Cependant, vous pouvez éviter de formater la chaîne en utilisant un paramètre:
db.delete(TABLE_BUS, KEY_BUS_NUM + " = ?", new String[] { bus_num });
Peut être..
public void Delete_Bus(String bus_num)
{
SQLiteDatabase db=this.getWritableDatabase();
db.execSQL("DELETE FROM "+TABLE_BUS+" WHERE "+KEY_BUS_NUM+"='"+bus_num+"'");
db.close();
}
public void Remove_Bookmarked(Bookmark bookmark) {
SQLiteDatabase db = this.getReadableDatabase();
db.delete(Bookmark_TABLE_NAME, COL_ID_CONTENT + "= ? and " + COL_TYPE + " = ?", new String[]{String.valueOf(bookmark.getId_content()), String.valueOf(bookmark.getType())});
}