android SQLite удалить запрос не работает

следующий запрос sqlite не удаляет идентификаторы, которые начинаются с нуля.

Android Sqlite структура таблицы

 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);

Я сохранил BUS_NUM как текст, а не как int для какой-то цели.

и это функция, которую я вызываю для удаления строки..

        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
        }

этот код работает очень хорошо, когда код не начинается с нуля..

он работает для 76555, а не для 09877. Что не так с моим кодом

2 ответов


запрос, сгенерированный этим кодом, заканчивается следующим образом:

DELETE FROM BusTable WHERE BusNum = 012345

база данных будет интерпретировать это как число, а не строку.

В SQL, строки должны быть указаны:

DELETE FROM BusTable WHERE BusNum = '012345'

однако вы можете избежать форматирования строки с помощью параметра:

db.delete(TABLE_BUS, KEY_BUS_NUM + " = ?", new String[] { bus_num });

может быть..

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