web-dev-qa-db-fra.com

android sqlite supprimer requête ne fonctionne pas

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

6
Indra Kumar S

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 });
28
CL.

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();
}
9
Ozan
    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())});

}
0
Ali Eslami