1
我正在使用java sqlite(org.sqlite.JDBC)与此我添加一个新的数据行的表,一个字段应该占用大量的base64编码数据(如pdf )这个字段的类型是sql-TEXT。现在,如果我删除了“DELETE FROM table WHERE id ='id'”这一行,那么该行会按预期删除,我的sqlite浏览器证实了这一点。但表格为4KB大的删除,添加行后为12MB,删除后仍保持12MB大小。有没有我需要做的一种清理? 在sqlite管理员(http://sqliteadmin.orbmu2k.de/)有一个“清理”按钮后,一切都很好,这意味着数据库缩小到其大小添加的东西(4KB)。后问谷歌我真的无法找到这样的SQL命令。似乎只有索引信息从我的数据库文件中被删除,而不是内容本身。这种行为从Windows删除函数中是已知的。sql清理功能。行不会真的被删除
那旁边,这里是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){
}
}