public static int executeBackup(String backupPath, String fileName) 
			throws SQLException, ClassNotFoundException {
		try (PreparedStatement stmt = getConnection().prepareStatement(SQL_BACKUP_DATABASE)) {
			String tempPath = Controller.getProperty(ApplicationProperties.APPLICATION_PATH) + 
					File.separatorChar + fileName;
			stmt.setString(1, tempPath);
			int result = stmt.executeUpdate();
			if (result != -1) {
				ZipFile zipFile = new ZipFile(backupPath + File.separatorChar + fileName + ".zip");
				ZipParameters parameters = new ZipParameters();
				parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
				parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
				zipFile.addFolder(tempPath, parameters);
				
				// Remove the temp directory
				DirUtils.deleteIfExists(new File(tempPath).toPath());
			}
			log.info("Database backed-up in {}", backupPath);
			return result;
		} catch (SQLException ex) {
			ErrorMessages.databaseBackupError("Dao.executeBackup()", ex, backupPath);
		} catch (ZipException ex) {
			ErrorMessages.databaseBackupZipError("Dao.executeBackup()", ex, backupPath);
		} catch (IOException ex) {
			log.warn("The temporary database backup directory couldn't been removed. Error message:\n{}", 
					ex.getLocalizedMessage());
		}
		return -1;
	}