функция очистки sql.строки действительно не удаляются - PullRequest
1 голос
/ 20 августа 2010

Я использую Java sqlite (org.sqlite.JDBC) с этим я добавляю новую строку данных в таблицу, одно поле должно занимать большой объем данных в кодировке base64 (например, pdf) типа это поле sql-текст. Теперь, если я удаляю строку с «УДАЛИТЬ ИЗ таблицы, ГДЕ id = 'id'», строка удаляется, как и ожидалось, мой sqlite-браузер подтверждает это. но таблица была для удаления размером 4 КБ, после добавления строки она составляла 12 МБ, а после удаления остается большой 12 МБ. Есть ли какая-то очистка, которую я должен сделать? в администраторе sqlite (http://sqliteadmin.orbmu2k.de/) после нажатия кнопки «Очистить» появляется кнопка «Очистить», что все в порядке, что означает, что база данных уменьшается до размера перед добавлением содержимого (4 КБ). . Кажется, из моего файла базы данных удаляются только индексные данные, а не сам контент. Такое поведение известно из функций удаления Windows.

Кроме того, вот фрагмент кода Java, который я использую:

public void deleteRowById(String table, int id){
    try {
        Connection connection = null;
        Class.forName("org.sqlite.JDBC");
        connection = DriverManager.getConnection("jdbc:sqlite:C:\\meinedb");

        //statement = connection.createStatement();
        String sql = "DELETE FROM "+table+" WHERE id='"+id+"'";
        PreparedStatement pstmt = connection.prepareStatement(sql);
        pstmt.executeUpdate();
        pstmt.close();
        connection.close();
    } catch (SQLException ex) {
        Logger.getLogger(FileSpinner.class.getName()).log(Level.SEVERE, null, ex);
    } catch (ClassNotFoundException ex){

    }

}

1 Ответ

1 голос
/ 20 августа 2010

Вы можете сжать базу данных SQLite с помощью оператора VACUUM. Прочтите руководство, на которое я ссылаюсь, для получения более подробной информации.

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