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:Para rodar:
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. |
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
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(); } } } } |
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(); } } } } |
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(); } } |
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(); } } |
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(); } } } } |
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(); } } |