Java com MySQL



  Acessando banco de dados com Java e MySQL, no modo texto.
 
	Como instalar o driver JDBC MySQL no modo shell (modo terminal texto) no Windows? 
	Para instalar o driver JDBC MySQL em um sistema Windows usando o terminal
	de texto (modo shell), você pode seguir estas etapas:
		1. Faça o download do driver JDBC MySQL (normalmente um arquivo JAR)
   		do site oficial do MySQL: MySQL Connector/J(https://dev.mysql.com/downloads/connector/j/).
		2. Depois de fazer o download, você terá um arquivo JAR. Mova este arquivo para o local onde
   		deseja armazená-lo em seu sistema.
		3. Adicione o caminho do arquivo JAR ao classpath do seu projeto Java. Isso pode ser feito
   		configurando a variável de ambiente CLASSPATH ou usando a opção -cp ao compilar e executar
   		seu código Java. Por exemplo, se você estiver compilando e executando seu código manualmente
   		no terminal, pode fazer algo assim:
   		
Para compilar:
Compilando uma classe
Para rodar:
Compilando uma classe
	
	Substitua "caminho/para/mysql-connector-java-x.x.xx.jar" pelo caminho real para o arquivo JAR que você baixou.
	Se estiver usando um IDE como Eclipse, IntelliJ IDEA ou NetBeans, você pode adicionar o arquivo JAR diretamente ao
	seu projeto, o que gerenciará automaticamente o classpath para você. Depois de configurar o classpath, você poderá
	usar as classes do driver JDBC MySQL em seu código Java sem problemas.

  
   Erros comuns:
   Erro: Não foi possível localizar nem carregar a classe principal Principal
   Causada por: java.lang.ClassNotFoundException: Principal
   Esse erro geralmente ocorre quando o Java não consegue encontrar a classe principal especificada para executar o programa.
   Existem algumas razões comuns para isso acontecer:
   1. O nome da classe principal está incorreto: Verifique se o nome da classe principal no comando java corresponde
   exatamente ao nome da classe em seu arquivo Java. Se você estiver executando a classe Main como no exemplo anterior, o
   comando deve ser java -cp .;caminho/para/mysql-connector-java-x.x.xx.jar Main.
   2. A classe principal não está no pacote padrão: Se a classe estiver em um pacote diferente do pacote padrão
   (sem declaração package), você precisará especificar o nome completo do pacote e da classe ao executar o programa. Por
   exemplo, se a classe Main estiver no pacote com.exemplo, você deve usar 
   java -cp .;caminho/para/mysql-connector-java-x.x.xx.jar com.exemplo.Main.
   3. O arquivo de classe não está no local especificado: Certifique-se de que o arquivo .class gerado pelo compilador
   Java esteja no local correto. Se você estiver compilando manualmente, verifique se o arquivo .class está no diretório
   atual. Se estiver usando um IDE, verifique se o projeto foi compilado com sucesso e se os arquivos .class estão presentes
   no local correto.
   

Criando o Banco de Dados

   Utilizaremos o Banco de Dados MySQL, para criamos a nossa aplicação.
   Criação do Bando de Dados:
# mysql -u root -p
Enter password:

show databases;
+--------------------+
| Database           |
+--------------------+
| agcont             |
| banco              |
| information_schema |
| meubanco           |
| mysql              |
| performance_schema |
| phpmyadmin         |
| strita             |
| test               |
| wpbanco            |
+--------------------+

Craindo o banco de dados banco_dados.

create database banco_dados; show databases; +--------------------+ | Database | +--------------------+ | agcont | | banco | | banco_dados | **** >>>> Banco de dados Criado. | information_schema | | meubanco | | mysql | | performance_schema | | phpmyadmin | | strita | | test | | wpbanco | +--------------------+

Craindo a tabela Alunos.

create table alunos( id int not null primary key, nome varchar(45) not null, fone varchar(20), email varchar(45));

Listando as tabelas do banco de dados:

show tables; +-----------------------+ | Tables_in_banco_dados | +-----------------------+ | alunos | +-----------------------+

Verificando a estrutura montada da tabela:

describe alunos; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | nome | varchar(45) | NO | | NULL | | | fone | varchar(20) | YES | | NULL | | | email | varchar(45) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+

Inserindo dados na tabela alunos:

insert into alunos(id,nome,fone,email) values (1,'jose','(13) 3487-8765','jose@gmail.com'), (2,'lurdes','(13) 3567-9876','lurdes@gmail.com');

Alterando o id da tabela para auto incremento:

ALTER TABLE `alunos` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;

Comandos em Java para Compilar e para Rodar um programa (Classe).

Comandos para compilar o projeto: javac -cp "mysql-connector-j-8.0.31.jar" Principal.java Comandos para rodar o projeto: java -cp .;"mysql-connector-j-8.0.31.jar" Principal

Criando o primerio programa em Java, no qual irá abrir e listar os dados da tabela alunos.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Principal {
    public static void main(String[] args) {
        // Informações de conexão com o banco de dados
        String url = "jdbc:mysql://localhost:3306/banco_dados";
        String usuario = "root";
        String senha = "";

        // Declaração das variáveis de conexão
        Connection conexao = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            // Estabelece a conexão com o banco de dados
            conexao = DriverManager.getConnection(url, usuario, senha);

            // Criação da declaração SQL
            stmt = conexao.createStatement();

            // Exemplo de consulta SQL
            String sql = "SELECT * FROM alunos";
            
            // Executa a consulta SQL
            rs = stmt.executeQuery(sql);

            // Itera sobre o resultado da consulta e imprime os valores
            System.out.println("======================================================================");
            System.out.println("Lista dos alunos");
            while (rs.next()) {
                String coluna1 = rs.getString("id");
                String coluna2 = rs.getString("nome");
                String coluna3 = rs.getString("fone");
                String coluna4 = rs.getString("email");
                // Adicione mais colunas conforme necessário
                System.out.println("ID : " + coluna1 + ", Nome: " + coluna2 + ", Fone : "+ coluna3 +
                 ", Email : "+ coluna4);
            }
            System.out.println("======================================================================");
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // Fecha os recursos
            try {
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conexao != null) conexao.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Criando um programa em Java, no qual irá inserir os dados para a tabela alunos.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class InserirAluno {
    public static void main(String[] args) {
        // Informações de conexão com o banco de dados
        String url = "jdbc:mysql://localhost:3306/banco_dados";
        String usuario = "root";
        String senha = "";

        // Declaração das variáveis de conexão
        Connection conexao = null;
        PreparedStatement pstmt = null;

        // Variáveis para armazenar os dados do aluno
        String nome, fone, email;

        // Objeto Scanner para entrada de dados
        Scanner scanner = new Scanner(System.in);

        try {
            // Estabelece a conexão com o banco de dados
            conexao = DriverManager.getConnection(url, usuario, senha);

            // SQL para inserir dados na tabela alunos
            String sql = "INSERT INTO alunos (nome, fone, email) VALUES (?, ?, ?)";

            // Prepara a declaração SQL
            pstmt = conexao.prepareStatement(sql);

            // Solicita ao usuário que insira os dados do aluno
            System.out.println("Digite o nome do aluno:");
            nome = scanner.nextLine();
            System.out.println("Digite o telefone do aluno:");
            fone = scanner.nextLine();
            System.out.println("Digite o email do aluno:");
            email = scanner.nextLine();

            // Define os parâmetros da declaração preparada
            pstmt.setString(1, nome);
            pstmt.setString(2, fone);
            pstmt.setString(3, email);

            // Executa a declaração preparada
            int linhasAfetadas = pstmt.executeUpdate();

            if (linhasAfetadas > 0) {
                System.out.println("Dados do aluno inseridos com sucesso!");
            } else {
                System.out.println("Falha ao inserir dados do aluno.");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // Fecha os recursos
            try {
                if (pstmt != null) pstmt.close();
                if (conexao != null) conexao.close();
                scanner.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Criando um programa em Java, no qual irá apagar os dados para a tabela alunos.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class ApagarAluno {
    public static void main(String[] args) {
        // Informações de conexão com o banco de dados
        String url = "jdbc:mysql://localhost:3306/banco_dados";
        String usuario = "root";
        String senha = "";

        // Declaração das variáveis de conexão
        Connection conexao = null;
        PreparedStatement pstmt = null;

        // Objeto Scanner para entrada de dados
        Scanner scanner = new Scanner(System.in);

        try {
            // Estabelece a conexão com o banco de dados
            conexao = DriverManager.getConnection(url, usuario, senha);

            // Mostra os registros existentes na tabela alunos
            mostrarRegistros(conexao);

            // Solicita ao usuário que escolha o ID do aluno a ser apagado
            System.out.println("Digite o ID do aluno que deseja apagar:");
            int id = scanner.nextInt();

            // SQL para apagar o aluno com o ID especificado
            String sql = "DELETE FROM alunos WHERE ID = ?";

            // Prepara a declaração SQL
            pstmt = conexao.prepareStatement(sql);

            // Define o parâmetro da declaração preparada
            pstmt.setInt(1, id);

            // Executa a declaração preparada
            int linhasAfetadas = pstmt.executeUpdate();

            if (linhasAfetadas > 0) {
                System.out.println("Aluno apagado com sucesso!");
            } else {
                System.out.println("Nenhum aluno encontrado com o ID especificado.");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // Fecha os recursos
            try {
                if (pstmt != null) pstmt.close();
                if (conexao != null) conexao.close();
                scanner.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // Método para mostrar os registros existentes na tabela alunos
    private static void mostrarRegistros(Connection conexao) throws SQLException {
        String sql = "SELECT ID, nome, fone, email FROM alunos";
        PreparedStatement pstmt = conexao.prepareStatement(sql);
        ResultSet rs = pstmt.executeQuery();

        System.out.println("Registros existentes na tabela alunos:");
        System.out.println("ID\tNome\tFone\tEmail");
        while (rs.next()) {
            int id = rs.getInt("ID");
            String nome = rs.getString("nome");
            String fone = rs.getString("fone");
            String email = rs.getString("email");
            System.out.println(id + "\t" + nome + "\t" + fone + "\t" + email);
        }

        rs.close();
        pstmt.close();
    }
}

Criando um programa em Java, no qual irá alterar os dados para a tabela alunos.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class AlterarAluno {
    public static void main(String[] args) {
        // Informações de conexão com o banco de dados
        String url = "jdbc:mysql://localhost:3306/banco_dados";
        String usuario = "root";
        String senha = "";

        // Declaração das variáveis de conexão
        Connection conexao = null;
        PreparedStatement pstmt = null;

        // Objeto Scanner para entrada de dados
        Scanner scanner = new Scanner(System.in);

        try {
            // Estabelece a conexão com o banco de dados
            conexao = DriverManager.getConnection(url, usuario, senha);

            // Mostra os registros existentes na tabela alunos
            mostrarRegistros(conexao);

            // Solicita ao usuário que escolha o ID do aluno a ser alterado
            System.out.println("Digite o ID do aluno que deseja alterar:");
            int id = scanner.nextInt();

            // Solicita ao usuário que insira os novos dados do aluno
            System.out.println("Digite o novo nome do aluno:");
            scanner.nextLine(); // Limpa o buffer do teclado
            String nome = scanner.nextLine();
            System.out.println("Digite o novo telefone do aluno:");
            String fone = scanner.nextLine();
            System.out.println("Digite o novo email do aluno:");
            String email = scanner.nextLine();

            // SQL para atualizar os dados do aluno com o ID especificado
            String sql = "UPDATE alunos SET nome = ?, fone = ?, email = ? WHERE ID = ?";

            // Prepara a declaração SQL
            pstmt = conexao.prepareStatement(sql);

            // Define os parâmetros da declaração preparada
            pstmt.setString(1, nome);
            pstmt.setString(2, fone);
            pstmt.setString(3, email);
            pstmt.setInt(4, id);

            // Executa a declaração preparada
            int linhasAfetadas = pstmt.executeUpdate();

            if (linhasAfetadas > 0) {
                System.out.println("Dados do aluno alterados com sucesso!");
            } else {
                System.out.println("Nenhum aluno encontrado com o ID especificado.");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // Fecha os recursos
            try {
                if (pstmt != null) pstmt.close();
                if (conexao != null) conexao.close();
                scanner.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // Método para mostrar os registros existentes na tabela alunos
    private static void mostrarRegistros(Connection conexao) throws SQLException {
        String sql = "SELECT ID, nome, fone, email FROM alunos";
        PreparedStatement pstmt = conexao.prepareStatement(sql);
        ResultSet rs = pstmt.executeQuery();

        System.out.println("Registros existentes na tabela alunos:");
        System.out.println("ID\tNome\tFone\tEmail");
        while (rs.next()) {
            int id = rs.getInt("ID");
            String nome = rs.getString("nome");
            String fone = rs.getString("fone");
            String email = rs.getString("email");
            System.out.println(id + "\t" + nome + "\t" + fone + "\t" + email);
        }

        rs.close();
        pstmt.close();
    }
}

Criando um programa em Java, no qual irá procurar os dados na tabela alunos.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class ProcurarAluno {
    public static void main(String[] args) {
        // Informações de conexão com o banco de dados
        String url = "jdbc:mysql://localhost:3306/banco_dados";
        String usuario = "root";
        String senha = "";

        // Declaração das variáveis de conexão
        Connection conexao = null;
        PreparedStatement pstmt = null;

        // Objeto Scanner para entrada de dados
        Scanner scanner = new Scanner(System.in);

        try {
            // Estabelece a conexão com o banco de dados
            conexao = DriverManager.getConnection(url, usuario, senha);

            // Solicita ao usuário que digite a letra inicial do nome
            System.out.println("Digite a letra inicial do nome para procurar:");
            String letraInicial = scanner.nextLine();

            // SQL para procurar os alunos cujo nome começa com a letra inicial especificada
            String sql = "SELECT ID, nome, fone, email FROM alunos WHERE nome LIKE ?";

            // Prepara a declaração SQL
            pstmt = conexao.prepareStatement(sql);

            // Define o parâmetro da declaração preparada
            pstmt.setString(1, letraInicial + "%"); // Adiciona o caractere '%' para buscar todos os nomes que começam com a letra especificada

            // Executa a declaração preparada
            ResultSet rs = pstmt.executeQuery();

            // Exibe os resultados da busca
            System.out.println("Registros encontrados na tabela alunos:");
            System.out.println("ID\tNome\tFone\tEmail");
            while (rs.next()) {
                int id = rs.getInt("ID");
                String nome = rs.getString("nome");
                String fone = rs.getString("fone");
                String email = rs.getString("email");
                System.out.println(id + "\t" + nome + "\t" + fone + "\t" + email);
            }

            // Fecha o ResultSet
            rs.close();

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // Fecha os recursos
            try {
                if (pstmt != null) pstmt.close();
                if (conexao != null) conexao.close();
                scanner.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Colocando todos os programas em uma única Classe. Criando o (CRUD)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class GerenciadorAlunos {
    // Informações de conexão com o banco de dados
    private static final String URL = "jdbc:mysql://localhost:3306/banco_dados";
    private static final String USUARIO = "root";
    private static final String SENHA = "";

    // Declaração das variáveis de conexão
    private Connection conexao;
    private PreparedStatement pstmt;
    private Scanner scanner;

    public GerenciadorAlunos() {
        this.conexao = null;
        this.pstmt = null;
        this.scanner = new Scanner(System.in);
    }

    // Método para estabelecer a conexão com o banco de dados
    private void conectar() throws SQLException {
        conexao = DriverManager.getConnection(URL, USUARIO, SENHA);
    }

    // Método para desconectar do banco de dados
    private void desconectar() throws SQLException {
        if (pstmt != null) pstmt.close();
        if (conexao != null) conexao.close();
    }

    // Método para incluir um novo aluno
    public void incluirAluno() {
        try {
            conectar();

            System.out.println("Digite o nome do aluno:");
            String nome = scanner.nextLine();
            System.out.println("Digite o telefone do aluno:");
            String fone = scanner.nextLine();
            System.out.println("Digite o email do aluno:");
            String email = scanner.nextLine();

            String sql = "INSERT INTO alunos (nome, fone, email) VALUES (?, ?, ?)";
            pstmt = conexao.prepareStatement(sql);
            pstmt.setString(1, nome);
            pstmt.setString(2, fone);
            pstmt.setString(3, email);
            pstmt.executeUpdate();

            System.out.println("Aluno incluído com sucesso!");

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                desconectar();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // Método para alterar os dados de um aluno
    public void alterarAluno() {
        try {
            conectar();

            System.out.println("Digite o ID do aluno que deseja alterar:");
            int id = scanner.nextInt();
            scanner.nextLine(); // Limpar o buffer do teclado

            System.out.println("Digite o novo nome do aluno:");
            String nome = scanner.nextLine();
            System.out.println("Digite o novo telefone do aluno:");
            String fone = scanner.nextLine();
            System.out.println("Digite o novo email do aluno:");
            String email = scanner.nextLine();

            String sql = "UPDATE alunos SET nome = ?, fone = ?, email = ? WHERE ID = ?";
            pstmt = conexao.prepareStatement(sql);
            pstmt.setString(1, nome);
            pstmt.setString(2, fone);
            pstmt.setString(3, email);
            pstmt.setInt(4, id);
            int linhasAfetadas = pstmt.executeUpdate();

            if (linhasAfetadas > 0) {
                System.out.println("Dados do aluno alterados com sucesso!");
            } else {
                System.out.println("Nenhum aluno encontrado com o ID especificado.");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                desconectar();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // Método para listar todos os alunos
    public void listarAlunos() {
        try {
            conectar();

            String sql = "SELECT ID, nome, fone, email FROM alunos";
            pstmt = conexao.prepareStatement(sql);
            ResultSet rs = pstmt.executeQuery();

            System.out.println("Registros existentes na tabela alunos:");
            System.out.println("ID\tNome\tFone\tEmail");
            while (rs.next()) {
                int id = rs.getInt("ID");
                String nome = rs.getString("nome");
                String fone = rs.getString("fone");
                String email = rs.getString("email");
                System.out.println(id + "\t" + nome + "\t" + fone + "\t" + email);
            }

            rs.close();

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                desconectar();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // Método para excluir um aluno
    public void excluirAluno() {
        try {
            conectar();

            System.out.println("Digite o ID do aluno que deseja excluir:");
            int id = scanner.nextInt();

            String sql = "DELETE FROM alunos WHERE ID = ?";
            pstmt = conexao.prepareStatement(sql);
            pstmt.setInt(1, id);
            int linhasAfetadas = pstmt.executeUpdate();

            if (linhasAfetadas > 0) {
                System.out.println("Aluno excluído com sucesso!");
            } else {
                System.out.println("Nenhum aluno encontrado com o ID especificado.");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                desconectar();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // Método principal para execução das operações
    public static void main(String[] args) {
        GerenciadorAlunos gerenciador = new GerenciadorAlunos();
        Scanner scanner = new Scanner(System.in);
        int opcao;

        do {
            System.out.println("\nSelecione a operação desejada:");
            System.out.println("1. Incluir aluno");
            System.out.println("2. Alterar aluno");
            System.out.println("3. Listar alunos");
            System.out.println("4. Excluir aluno");
            System.out.println("5. Sair");
            System.out.print("Opção: ");
            opcao = scanner.nextInt();

            switch (opcao) {
                case 1:
                    gerenciador.incluirAluno();
                    break;
                case 2:
                    gerenciador.alterarAluno();
                    break;
                case 3:
                    gerenciador.listarAlunos();
                    break;
                case 4:
                    gerenciador.excluirAluno();
                    break;
                case 5:
                    System.out.println("Encerrando o programa...");
                    break;
                default:
                    System.out.println("Opção inválida. Por favor, selecione uma opção válida.");
            }
        } while (opcao != 5);

        scanner.close();
    }
}