Я использую 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){
}
}