Ir ao conteúdo
  • Cadastre-se

Java Que erro é este ao criar o Crud de banco de dados ?


Nino2019

Posts recomendados

Selecione uma das opções abaixo: 
1 - para inserir um aluno no sistema.
2 - para visualizar todos os alunos cadastrados no sistema.
3 - para sair do sistema.
************************************************************
Resposta: 1
Informe o nome do aluno:Nivldo
Informe a data de nascimento do aluno:03/02/1980
Informe o curso do aluno:ads
Informe o RA do aluno:34566
nov 19, 2019 11:27:02 AM DAO.FabricaConexao conexao
GRAVE: null
java.sql.SQLException: Access denied for user 'poo'@'localhost' (using password: NO)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:925)
	at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1704)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1250)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2465)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	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.ConnectionImpl.getInstance(ConnectionImpl.java:404)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at DAO.FabricaConexao.conexao(FabricaConexao.java:35)
	at DAO.DAOAluno.conectar(DAOAluno.java:36)
	at DAO.DAOAluno.insereAluno(DAOAluno.java:51)
	at visao.CadastrarAluno.validacaoCadastro(CadastrarAluno.java:51)
	at visao.CadastrarAluno.telaCadastro(CadastrarAluno.java:41)

 

Link para o comentário
Compartilhar em outros sites

Bom dia @Nino2019

 

4 minutos atrás, Nino2019 disse:

java.sql.SQLException: Access denied for user 'poo'@'localhost' (using password: NO)

 

O seu usuário ou a sua senha estão incorretos, por isso o java não consegue abrir uma conexão com o seu banco de dados.

 

Poderia colocar aqui o código fonte que faz a sua conexão com o banco de dados?

  • Amei 1
Link para o comentário
Compartilhar em outros sites

@Leonardo0308 @Leonardo0308 @Leonardo0308 @Leonardo0308 @Leonardo0308 @Leonardo0308

package DAO;

import dominio.Aluno;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe DAOAluno
 Autora Profª Ligia
 09/11/2016
 Código didático disponibilizado pela professora - IFTM/campus Patrocínio   
 */
public class DAOAluno 
{
    
     //Classe responsável pela conexão (sessão) com um banco de dados específico. 
    //As instruções SQL são executadas e os resultados são retornados dentro do contexto de uma conexão.
     private Connection con;
     
    //Pre-compila a query para o banco de dados
    // Cria um objeto PreparedStatement para enviar instruções SQL parametrizadas para o banco de dados.
    //Uma instrução SQL com ou sem parâmetros IN pode ser pré-compilada e armazenada em um objeto PreparedStatement.
    //Esse objeto pode ser usado para executar essa instrução de forma eficiente várias vezes. 
    private PreparedStatement comando;
    
    private final FabricaConexao fConexao = 
            FabricaConexao.getInstancia();
    
    // Método acessado internamente para conectar com o banco
    private void conectar()
    {
        con = fConexao.conexao();
    }
    
    //Método que fecha a conexão com o banco
    private void fechar(){
        try{
            comando.close();
            con.close();
        }catch(SQLException e){
            System.err.println("Erro ao fechar conexão\n"+e.getMessage());
        }
    }
    
    public boolean insereAluno(Aluno aluno){
        
        conectar();
        String sql = "INSERT INTO ALUNO(NOME, "
                + "DATA_NASCIMENTO, CURSO, RA) "
                + "VALUES(?,?,?,?)";
        try
        {
            comando = con.prepareStatement(sql);
            comando.setString(1, aluno.getNome());
            comando.setString(2, aluno.getDataNascimento());
            comando.setString(3, aluno.getCurso());
            comando.setString(4, aluno.getRa());
           
            comando.execute();
            
            return true;
        }
        catch(SQLException e)
        {
            System.err.println("Erro ao inserir Aluno\n"+e.getMessage());
        }
        finally
        {
            fechar();
        }
        return false;
    }
    
    public  ArrayList<Aluno> selecionarTodosRegistros()
    {
        conectar();
        //interface utilizada pra guardar dados vindos de um banco de dados
        ResultSet rs;
        String sql = "SELECT * FROM ALUNO";
        //lista que conterá todas as informações de pessoas no banco de dados
        ArrayList<Aluno> listaAlunos = new ArrayList();
        try
        {
            comando = con.prepareStatement(sql);
            rs = comando.executeQuery();
            while(rs.next())
            {
                Aluno aluno = new Aluno();
                aluno.setNome(rs.getString("NOME"));
                aluno.setDataNascimento(rs.getString("DATA_NASCIMENTO"));
                aluno.setCurso(rs.getString("CURSO"));
                aluno.setRa(rs.getString("RA"));
                listaAlunos.add(aluno);
            }
            return listaAlunos;
        }
        catch(SQLException e)
        {
            System.err.println("Erro visualizar Alunos\n"+e.getMessage());
            return null;
        }
        finally
        {
            fechar();
        }
    }
    
    

}

package DAO;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;


public class FabricaConexao {
    //Padrão Singleton
   //Garantir que uma classe tenha uma, somente uma instância e forneça um ponto 
    //global de acesso para a mesma.
    private static FabricaConexao instanciaUnica;
    
    private FabricaConexao(){}
    
    public static FabricaConexao getInstancia()
    {
        if(instanciaUnica == null) instanciaUnica = new FabricaConexao();
        return instanciaUnica;
    }
    
     public Connection conexao()
     {
        //Classe que fornece informações de tabelas, SQL's, procedimentos e sintaxe.
        Connection con = null;
        try 
        {
            //fazendo a chamada para carregar o drive do MySql
            Class.forName("com.mysql.jdbc.Driver");
//            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
            String url = ("jdbc:mysql://127.0.0.1/poo");
            //estabelecendo conexão com o caminho, usuário e senha
            con = DriverManager.getConnection(url, "poo", "");
        } 
        catch (ClassNotFoundException ex) 
        {
            Logger.getLogger(FabricaConexao.class.getName()).log(Level.SEVERE, null, ex);
        }
        catch (SQLException ex) 
        {
            Logger.getLogger(FabricaConexao.class.getName()).log(Level.SEVERE, null, ex);
        }
        return con;
    }
    
    
}

// dominio

package dominio;

/**
 * Classe Aluno
 Autora Profª Ligia
 09/11/2016
 Código didático disponibilizado pela professora - IFTM/campus Patrocínio   
 */
public class Aluno 
{
    private String nome;
    private String dataNascimento;
    private String curso;
    private String ra;

    public Aluno(){ }

    public Aluno(String nome, String dataNascimento, String curso, String ra) 
    {
        this.nome = nome;
        this.dataNascimento = dataNascimento;
        this.curso = curso;
        this.ra = ra;
    }
    

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setDataNascimento(String dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    public void setCurso(String curso) {
        this.curso = curso;
    }

    public void setRa(String ra) {
        this.ra = ra;
    }
    
    public String getNome() 
    {
        return nome;
    }

    public String getDataNascimento() 
    {
        return dataNascimento;
    }

    public String getCurso() 
    {
        return curso;
    }

    public String getRa() 
    {
        return ra;
    }

    @Override
    public String toString() 
    {
        return "nome =" + nome + ", "
                + "dataNascimento =" + dataNascimento + ", curso =" + 
                curso + ", ra =" + ra + '}';
    }
    
}
// visao

package visao;

import java.util.Scanner;
import DAO.DAOAluno;
import dominio.Aluno;

/**
 * Classe CadastrarAluno
 Autora Profª Ligia
 09/11/2016
 Código didático disponibilizado pela professora - IFTM/campus Patrocínio   
 */
public class CadastrarAluno 
{
    
    
    public void telaCadastro() 
    {
        Scanner ler = new Scanner(System.in);
        
        System.out.printf("Informe o nome do aluno:");
        String nomeAluno = ler.nextLine();
        
        System.out.printf("Informe a data de nascimento do aluno:");
        String dataNascimentoAluno = ler.nextLine();
        
        System.out.printf("Informe o curso do aluno:");
        String cursoAluno = ler.nextLine();
        
        System.out.printf("Informe o RA do aluno:");
        String raAluno = ler.nextLine();
        
        Aluno mAluno = new Aluno();
        
        mAluno.setNome(nomeAluno);
        mAluno.setDataNascimento(dataNascimentoAluno);
        mAluno.setCurso(cursoAluno);
        mAluno.setRa(raAluno);
        
        System.out.println(validacaoCadastro(mAluno));
    }
    
    private String validacaoCadastro(Aluno aluno)
    {
        DAOAluno salvarDados = new DAOAluno();
        if(aluno.getNome().equals("") || aluno.getRa().equals(""))
        {
            return "Nome do aluno e/ou RA em branco. Preencha todos os campos.";
        }
        else if(salvarDados.insereAluno(aluno))
        {
            return "Dados salvos com sucesso!";
        }
        else
        {
            return "Erro ao inserir aluno! Cadastre novamente.";
        }
    }
}
package visao;

import java.util.Scanner;

/**
 * Classe TelaPrincipal
 * Autora Profª Ligia
 * 25/11/2016
 * Código didático disponibilizado pela professora - IFTM/campus Patrocínio   
 */
public class TelaPrincipal 
{
    //classe que implementa as operações de 
        //entrada de dados pelo teclado no console
        //lendo int - ler.nextInt();
        //lendo float - ler.nextFloat(); 
        //lendo double - ler.nextDouble();
        //lendo uma String, usado na leitura de palavras simples que não 
            //usam o caractere de espaço (ou barra de espaço) - ler.next();
        //lendo uma String, usado na leitura de palavras compostas - ler.nextLine();

     public static void main(String[] args) 
    {
        Scanner ler = new Scanner(System.in);
        String opcao = "";
        do
        {
            System.out.println("************************************************************");
            System.out.println("Selecione uma das opções abaixo: ");
            System.out.println("1 - para inserir um aluno no sistema.");
            System.out.println("2 - para visualizar todos os alunos cadastrados no sistema.");
            System.out.println("3 - para sair do sistema.");
            System.out.println("************************************************************");
            System.out.print("Resposta: ");
            opcao = ler.nextLine();
            eventoRedirecionamento(opcao);
        }while(!opcao.equals("3"));
    }
     
    private static void eventoRedirecionamento(String opcao)
    {
        if(opcao.equals("1"))
        {
            new CadastrarAluno().telaCadastro();
        }
        else if (opcao.equals("2"))
        {
            new VisualizarAluno().visualizarTodosAlunos();
        }
    }

}
package visao;

import java.util.ArrayList;
import DAO.DAOAluno;
import dominio.Aluno;

/**
 * Classe VisualizarAluno
 * Autora Profª Ligia
 * 25/11/2016
 * Código didático disponibilizado pela professora - IFTM/campus Patrocínio   
 */
public class VisualizarAluno 
{
    public void visualizarTodosAlunos()
    {
        DAOAluno visualizarDados = new DAOAluno();
       
        ArrayList<Aluno> todosAluno = new ArrayList();
        todosAluno = visualizarDados.selecionarTodosRegistros();
        
        System.out.println("****************************************************");
        System.out.println("Visualizando todos os alunos:");
        
        for(Aluno aluno : todosAluno)
        {
            System.out.println("Nome: "+aluno.getNome());
            System.out.println("Data Nascimento: "+aluno.getDataNascimento());
            System.out.println("Curso: "+aluno.getCurso());
            System.out.println("RA: "+aluno.getRa());
            System.out.println("");
        }
    }

}

 

adicionado 1 minuto depois

@Leonardo0308 Bom dia ! Eu postei o código completo, se puder olhar eu agradeço.

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

@Nino2019 Olá. Desculpa me intrometer. Vendo o seu projeto a questão que pode dar erro é a forma de como você está fazendo a leitura dos dados inseridos pelo usuário, com a classe Scanner. Essa classe não é recomendada para isso, e o que pode ocorrer é o problema de "sujeira no buffer".

 

Recomendo o uso de uma classe como essa:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Console {
    public static String readString() {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            return reader.readLine();
        } catch (IOException e) {
            throw new RuntimeException("Erro ao ler o dado do teclado");
        }
    }

    public static char readChar() {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            return reader.readLine().charAt(0);
        } catch (IOException e) {
            throw new RuntimeException("Erro ao ler o dado do teclado");
        }
    }

    public static int readInt() {
        String str = readString();

        try {
            return Integer.parseInt(str);
        } catch (NumberFormatException e) {
            throw new RuntimeException(str + " nao e um int valido");
        }
    }
}

Com isso você evita qualquer problema na leitura dos dados

Aplicando em seu projeto ficaria assim:

System.out.printf("Informe o nome do aluno:");
String nomeAluno = Console.readString();

System.out.printf("Informe a data de nascimento do aluno:");
String dataNascimentoAluno = Console.readString();

System.out.printf("Informe o curso do aluno:");
String cursoAluno = Console.readString();

System.out.printf("Informe o RA do aluno:");
String raAluno = Console.readString();

Aluno mAluno = new Aluno();

Recomendo fazer uso da classe acima toda vez que fizer leitura de dados com o teclado em algum projeto

É só uma dica para que algum eventual problema não venha a ocorrer nesse ponto que falei :)

 

Veja mais aqui sobre sujeira no buffer (stdin) (Vale para o Java também!)

https://www.youtube.com/watch?v=ixk5RIqABjI

Obs: Só a maneira de resolver o problema em C que é dada no vídeo também não é recomendada

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!