Problemas ao deletar registo usando Mysql

Estou realizando uma instrução com MySQL para deletar um arquivo e não consigo quando tento usar de maneira parametrizada. Segue o código e o erro gerado:

public void deletar() {

		String query = "DELETE FROM funcionario WHERE id_funcionario = ?";
	try {
		PreparedStatement pst = conn.prepareStatement(query);
		pst.setInt(1, Integer.parseInt(JOptionPane.showInputDialog("Quem deseja excluir?")));
		pst.execute(query);
	} catch (SQLException e) {
		e.printStackTrace();
	}
	
}

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘?’ at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2809)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2758)
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:894)
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:732)
at jdbc.mysql.AppEx03Connect.deletar(AppEx03Connect.java:103)
at jdbc.mysql.AppEx03Connect.main(AppEx03Connect.java:27)

Sempre coloco o nome do banco na assim:

delete from suaBase.suaTabela where id_deletar=?;

uma duvida… e se o cliente informar um id que não existe na base? como vc vai tratar isso

    String query = "DELETE FROM funcionario WHERE id_funcionario = ?";
try {
	PreparedStatement pst = conn.prepareStatement(query); // aqui você está passando a query
	pst.setInt(1, Integer.parseInt(JOptionPane.showInputDialog("Quem deseja excluir?")));
	pst.execute(query); // então não faz sentido passar aqui
} catch (SQLException e) {
	e.printStackTrace();
}

O método execute(String) é herdado da interface Statement, mas você está usando um PreparedStatement.
Se você quer fazer um INSERT, DELETE ou UPDATE, deve usar o método executeUpdate()
Veja a documentação.

String query = "DELETE FROM funcionario WHERE id_funcionario = ?";
try {
	PreparedStatement pst = conn.prepareStatement(query);
	pst.setInt(1, Integer.parseInt(JOptionPane.showInputDialog("Quem deseja excluir?")));
	pst.executeUpdate();
} catch (SQLException e) {
	e.printStackTrace();
}