Удалить данные из базы данных SQLite - PullRequest
2 голосов
/ 21 сентября 2011

Привет, я борюсь с SQLite в Android.

Я пытаюсь удалить старые сообщения из БД, выполнив это

this.db.delete(
  EVENT_TABLE_NAME,
  "date < ?", 
  new String[] {String.valueOf(limit.getTime())}
);

Где предел - текущая дата, взятая из экземпляров Календаря и вычтенная 216000000 миллисекунд.

Но это, кажется, удаляет все сообщения.

Ответы [ 4 ]

3 голосов
/ 21 сентября 2011

попробуйте

this.db.delete(
  EVENT_TABLE_NAME,
  "date < "+limit.getTime(),null);
0 голосов
/ 21 сентября 2011

Это работает для меня:

    public static boolean deleteData(String tableName,String where, String[] value){
    sqliteDb = instance.getWritableDatabase();
    sqliteDb.delete(tableName, where, value);
    return true;
    }
0 голосов
/ 21 сентября 2011

Вы можете попробовать что-то вроде этого:

public static String getDateStringFromDate(Date date, String pattern,
                                           String timezone) {
    // Set locale to US to prevent date issues
    if (!Locale.getDefault().equals(Locale.US)) {
        Locale.setDefault(Locale.US);
    }
    SimpleDateFormat df = new SimpleDateFormat(pattern);
    if (timezone != null) {
        df.setTimeZone(TimeZone.getTimeZone(timezone));
    }
    if (date == null) {
        return null;
    }
    try {
        return df.format(date);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

Эта функция создаст строку с вашим пользовательским форматом даты, и вы сможете создать функциональный запрос :) И после этого вы можете использовать функцию удаления, подобную этой:

this.db.delete(
    EVENT_TABLE_NAME,
    "date < ?", 
    new String[] {getDateStringFromDate(date,pattern,timezone)}

);

0 голосов
/ 21 сентября 2011

Мое предположение будет:

context.deleteDatabase (DATABASE_NAME);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...