Palmira de Sa 0 Posted November 11, 2017 Report Share Posted November 11, 2017 Ola pessoal. tenho dificuldades na conecao do java com o mysql server. ja criei a classe de coneccao, criei uma classe que recebe o nome de uma das tabelas do banco de dados, ja na classe DAO, tenho problemas na linha que devia executar o statament, mas nao sei como resolver, nao consigo perceber o erro. ajudem por favor. a classe da coneccao: import com.mysql.jdbc.PreparedStatement; import java.sql.Connection; import java.sql.Statement; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; public class Coneccao { private static final String DRIVER="com.mysql.jdbc.Driver"; private static final String URL="jdbc:mysql://localhost:3306/mydb"; private static final String USER="root"; private static final String PASS=""; boolean ok; public static Connection getConnection() { try { Class.forName(DRIVER); } catch (ClassNotFoundException ex) { Logger.getLogger(Coneccao.class.getName()).log(Level.SEVERE, null, ex); } try { DriverManager.getConnection(URL,USER,PASS); } catch (SQLException ex) { Logger.getLogger(Coneccao.class.getName()).log(Level.SEVERE, null, ex); } //just testing.. return null; } public static void closeConnection(Connection con) { if (con!= null){ try { con.close(); } catch (SQLException ex) { Logger.getLogger(Coneccao.class.getName()).log(Level.SEVERE, null, ex); } } } public static void closeConnection(Connection con, PreparedStatement stmt ) { closeConnection(con); if(stmt!=null){ try { stmt.close(); } catch (SQLException ex) { Logger.getLogger(Coneccao.class.getName()).log(Level.SEVERE, null, ex); } } } public static void closeConnection(Connection con, PreparedStatement stmt, ResultSet rs) { closeConnection(con,stmt); if(rs!=null){ try { rs.close(); } catch (SQLException ex) { Logger.getLogger(Coneccao.class.getName()).log(Level.SEVERE, null, ex); } } } public static void main(String args[]) { Coneccao c= new Coneccao(); c.getConnection(); } } a classe java para a tabela: public class Funcionario { private String idFuncionario; private String nome; private String apelido; private int idade; private String departamento; public String getIdFuncionario() { return idFuncionario; } public void setIdFuncionario(String idFuncionario) { this.idFuncionario = idFuncionario; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getApelido() { return apelido; } public void setApelido(String apelido) { this.apelido = apelido; } public int getIdade() { return idade; } public void setIdade(int idade) { this.idade = idade; } public String getDepartamento() { return departamento; } public void setDepartamento(String departamento) { this.departamento = departamento; } } a classe DAO: import BEAN.Funcionario; import Model.Coneccao; import com.mysql.jdbc.PreparedStatement; import java.sql.Connection; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; /** * * @author Palmira */ public class ManipulandoBD { public static void create(Funcionario f) { Connection con = Coneccao.getConnection(); PreparedStatement stmt = null; try { stmt=(PreparedStatement)con.prepareStatement("INSERT INTO funcionario (idFuncionario,Nome,Apelido,Idade,Departamento)VALUES(?,?,?,?,?)"); stmt.setString(1, f.getIdFuncionario());//a posicao das colunas como colocamos na linha acima e string. stmt.setString(2, f.getNome()); stmt.setString(3, f.getApelido()); stmt.setInt(4, f.getIdade()); stmt.setString(5, f.getDepartamento()); stmt.executeUpdate();//executa o statement System.out.println("salvo com sucesso"); } catch (SQLException ex) { System.out.println("nao salvou"); Logger.getLogger(ManipulandoBD.class.getName()).log(Level.SEVERE, null, ex); }finally{ Coneccao.closeConnection(con, stmt); } } public static void main(String[] args) { Funcionario f= new Funcionario(); f.setIdFuncionario("1"); f.setDepartamento("contabilidade"); f.setApelido("Sa"); f.setNome("Palmira"); f.setIdade(20); create(f); } } no output, aparece o erro: run: Exception in thread "main" java.lang.NullPointerException at DAO.ManipulandoBD.create(ManipulandoBD.java:30) at DAO.ManipulandoBD.main(ManipulandoBD.java:53) Picked up _JAVA_OPTIONS: -Xms256M Java Result: 1 como resolvo? Link to post Share on other sites
FacaNaCaveira 0 Posted February 1, 2018 Report Share Posted February 1, 2018 Ola Palmira, boa noite O erro reportado na linha abaixo, informa em quais linhas estão ocorrendo os problemas, no caso dessa mensagem aponta para as linhas 30 e 53 do arquivo ManipulandoBD.java run: Exception in thread "main" java.lang.NullPointerException at DAO.ManipulandoBD.create(ManipulandoBD.java:30) at DAO.ManipulandoBD.main(ManipulandoBD.java:53) Picked up _JAVA_OPTIONS: -Xms256M Java Result: 1 Nos caso do seu código, essa seria a linha 30 stmt=(PreparedStatement)con.prepareStatement("INSERT INTO funcionario (idFuncionario,Nome,Apelido,Idade,Departamento)VALUES(?,?,?,?,?)"); E essa seria a linha 53 create(f); Esse erro de java.lang.NullPointerException sempre ocorre quando esquecemos de instanciar alguma classe e tentamos utilizar os métodos dela. No seu caso o erro esta na classe de Coneccao, pois o return dela esta sendo NULL, entao toda vez que vc chama o getConnection() ele retorna NULL para a conexao O seu código esta assim: public static Connection getConnection() { try { Class.forName(DRIVER); } catch (ClassNotFoundException ex) { Logger.getLogger(Coneccao.class.getName()).log(Level.SEVERE, null, ex); } try { DriverManager.getConnection(URL,USER,PASS); } catch (SQLException ex) { Logger.getLogger(Coneccao.class.getName()).log(Level.SEVERE, null, ex); } //just testing.. return null; } e deveria estar assim: public static Connection getConnection() { try { Class.forName(DRIVER); } catch (ClassNotFoundException ex) { Logger.getLogger(Coneccao.class.getName()).log(Level.SEVERE, null, ex); } try { return DriverManager.getConnection(URL,USER,PASS); } catch (SQLException ex) { Logger.getLogger(Coneccao.class.getName()).log(Level.SEVERE, null, ex); return null; } //just testing.. } Espero ter ajudado. Abraços Max Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now