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