Preciso desenvolver um projeto Java que faça o seguinte:
Em uma classe tenha a função de conexão JDBC ao postgresql.
Em outra classe tenha o modelo da entidade.
Em outra classe tenha as funções do CRUD.
Eu consegui fazer isso porém só quando a inserção é com os dados digitados no código mas eu queria que
fosse com a entrada de dados pelo usuário, usando a função Scanner.
Exemplo(código na mesma classe da conexao, inserindo com Scanner)
import java.sql.*;
import java.util.Scanner;
public class TesteJDBC {
public static void main(String args[]){
// Instancia o Objeto Scanner
Scanner sc = new Scanner(System.in);
try{
// Driver que será usado
Class.forName("org.postgresql.Driver");
// URL usada para conexão com o SGBD e BD
String url = "jdbc:postgresql://127.0.0.1:5432/locadora";
// Parametros para conexão
Connection con = DriverManager.getConnection(url,"postgres","aluno");
// Obtendo um Prepared Statement para executar comandos
String comando = "Insert INTO filmes(cd_filme, ds_filme)VALUES(?,?)";
PreparedStatement pstm = con.prepareStatement(comando);
// Armazenando os campos em "?" em variáveis
System.out.print("Digite o Número de Identificação: ");
int id = sc.nextInt();
System.out.print("Digite o Codigo do Filme: ");
long codigo = sc.nextLong();
System.out.print("Digite o Nome do Filme : ");
String nome = sc.next();
System.out.print("Digite a Descrição do Filme(Sem Espaços): ");
String descricao = sc.next();
// Inserindo as variáveis no comando sql no lugar de ?
pstm.setInt(1,id);
pstm.setLong(1,codigo);
pstm.setString(2,nome);
pstm.setString(3, descricao);
// Executa o comando
pstm.executeUpdate();
// Fecha o PreparedStatement
pstm.close();
// Consultas
String sql = "SELECT * FROM filmes";
Statement stm = con.createStatement();
ResultSet res = stm.executeQuery(sql);
while(res.next()){
int id_filme = res.getInt("id");
long codigo_filme = res.getLong("cod_filme");
String nome_filme = res.getString("nm_filme");
String descricao_filme = res.getString("ds_filme");
System.out.println("Id do Filme: " + id_filme + " | Codigo do Filme: " + codigo_filme + " | Nome do Filme: " + nome_filme + " | Descrição do Filme: " + descricao_filme);
// Fim das consultas
// Fecha a conexão
con.close();
}
}catch(Exception ex){
ex.printStackTrace();
ex.getMessage();
}
}
}
Como faço para inserir com a função scanner numa classe separada da conexão? E uma consulta também em classe separada da conexão?
Fico na dúvida de como escrever o método quando é por scanner e como chamá-lo. E o projeto deve ser MVC e ter camada DAO.
Depois ainda preciso alterar a DAO para que todas chamadas do projeto utilizem o Hibernate.