Jump to content

Coneccao java e mysql


Palmira de Sa

Recommended Posts

Palmira de Sa

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.