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){
}
}