/*Com ajuda deste fórum consegui fazer essa procedure
no MySql que mostra o percentual de materiais utilizáveis.
DELIMITER $$
CREATE PROCEDURE Percentual_Tipo_Materiais()
BEGIN
SELECT truncate(((SELECT count(tipo_materiais)
from materiais where tipo_materiais='UTILIZÁVEL')*100/count(*)),0)
FROM materiais;
END $$
DELIMITER;
Fiz essa implementação no Netbeans.
*/
public class Percentual_Tipo_Materiais {
ComandosSql con_materiais;
public String PercentualTipo = "";
public void Percentual_Tipo_Materiais_Utilizaveis(String valor){
try{
con_materiais = new ComandosSql();
con_materiais.conecta();
con_materiais.executeSQL("CALL Percentual_Tipo_Materiais()");
while (con_materiais.resultset.next()) {
valor = con_materiais.resultset.getString("valor");
PercentualTipo = valor+"%";
}
}catch(Exception err){
Funcoes.mensagemAviso("Funcionalidade não executada.");
}
}
/*Ao clicar num botão de um formulário teria que colocar no jtfield o resultado encontrado*/
try{
perc_utilizavel.Percentual_Tipo_Materiais_Utilizaveis("valor");
jtf_Percentual_Utilizavel.setText(perc_utilizavel.PercentualTipo);
}catch(Exception erro){
Funcoes.mensagemErro("Ocorreu um erro no comando executado.");
}
}
/*Infelizmente não funcionou. Sou iniciante e conto com o apoio de vocês, obrigado*/
Vamos esclarecer uma coisa primeiro.
O netbeans não faz nada.
O Eclipse não faz nada.
Quem faz alguma coisa que você programou é a linguagem java, e a JVM, é o PHP ou qual seja a linguagem que você programou.
Esclarecida a situação, o que vem a ser a classe ComandosSQL?
Aliás, para que java execute uma StoredProcedure, se faz necessário o uso de uma classe chamada CallableStatement, do pacote java.sql.
Se ComandosSQL possui objetos desta classe, CallableStatement, ainda será preciso postá-la, para melhor entendermos.
Caso contráro (acredito que esteja usando Statement ou PreparedStatement), pesquise no google.
A sintaxe é parecida, fácil e direta.
/*Fiz a classe Comandos sql para fazer conexão e chamadas de comandos sql no netbeans:*/
public class ComandosSql {
package MVC.Modelo.Dao;
import java.sql.*;
import utililidades.Funcoes;
public class ComandosSql {
final private String driver = "com.mysql.jdbc.Driver";
final private String url = "jdbc:mysql://localhost:3306/almoxarifado";
final private String usuario = "root";
final private String senha = "123456";
private Connection conexao;
public Statement statement;
public ResultSet resultset;
public boolean conecta(){//Abrindo Conexão
boolean result = true;
try{
Class.forName(driver);
conexao = DriverManager.getConnection(url,usuario,senha);
}
catch(ClassNotFoundException Driver){
Funcoes.mensagemAviso("Driver da conexão não encontrado: "+Driver);
result = false;
}
catch(SQLException Fonte){
Funcoes.mensagemAviso("Erro na conexão com a fonte de dados: "+Fonte);
result = false;
}
return result;
}
public void desconecta(){//Fechando conexão
boolean result = true;
try {
conexao.close();
Funcoes.mensagemAviso("Banco de Dados fechado.");
} catch (SQLException fecha) {
Funcoes.mensagemAviso("Não foi possível fechar o banco de dados. "+fecha);
result = false;
}
}
public void executeSQL(String sql){//Inserindo comandos SQL
try{
statement = conexao.createStatement();
resultset = statement.executeQuery(sql);
}catch(SQLException sqlex){
Funcoes.mensagemErro("Não foi possível "+
"executar o comando sql,"+sqlex+", o sql passado foi: "+sql);
}
}
}
/*Até que funciona legal mas com as procedures não rola, com o seu esclarecimento
percebo que é necessário um método específico para chamar procedures.
Gostaria de ajuda para fazer um método para utilizar o CallableStatement pra poder chamar a procedure.
Se você tiver exemplos de chamadas de procedures em Mysql por favor mande.
Sou estudante ainda e por isso que estou com dificuldades.
Obrigado.*/
public Statement statement;
Isto não faz nada para chamar um preparedStatement. Apenas erro.
Uma pesquisa no google por CallableStatement e você terá exemplos simples, médios e complexos.
Qualquer dúvida, pergunte no fórum.
Muito obrigado, até mais…