Help com inserção (JDBC)

2 respostas
caiodorn

E aí, pessoal... essa é a primeira vez que apareço com um tópico do tipo, espero que possam me ajudar... já estou há um tempão quebrando a cabeça e nada, tive que recorrer hehe.

O programa está compilando, não acusa erro nenhum, roda normalmente... mas então faço uma consulta no BD e vejo que o mesmo está em branco.

O programa é tosco, não riam hehe estou engatinhando.

A classe abaixo é de um programa original que não utilizava BD, como podem ver... o que interessa, por enquanto, é só a inserção de "aluno" no BD. Ignorem os trechos comentados da classe DB.

P.s.: não me perguntem o pq do modo texto, professor quis assim =|

import java.util.*;
import java.io.BufferedReader;      //http://www.guj.com.br/java/74068-classe-vector
import java.io.IOException;
import java.io.InputStreamReader;

public class Entrada{
    
    public static void main(String[] args){
        try{            
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));  
  
            String linha = "";
            
            DB.conecta();
            
            List<Aluno> alunos = new ArrayList<Aluno>();
            List<Professor> professores = new ArrayList<Professor>();
            List<Aula> aulas = new ArrayList<Aula>();
            List<Disciplina> disciplinas = new ArrayList<Disciplina>();
            List<Turma> turmas = new ArrayList<Turma>();
            List<Conceito> conceitos = new ArrayList<Conceito>();
                       
            while(!linha.equals("FIM")){
                
                System.out.println("\n(1) - Pesquisar as Disciplinas que um Aluno está matriculado"); 
                System.out.println("(2) - Pesquisar os conceitos de um Aluno em uma Disciplina");
                System.out.println("(3) - Digitar os conceitos de um Aluno em uma Disciplina"); 
                System.out.println("(4) - Pesquisar todos os conceitos dos Alunos de uma Disciplina"); 
                System.out.println("(5) - Atribuir faltas a um Aluno em uma Aula de uma Disciplina"); 
                System.out.println("(6) - Pesquisar as faltas de um Aluno em uma Disciplina");
                System.out.println("\nDigite o numero correspondente a operacao desejada apos a insercao dos dados... \n");
                
                linha = reader.readLine();
                                                
                if(linha.equals("Aluno")){
                    Aluno aluno = new Aluno();
                    linha = reader.readLine();
                    aluno.setNome(linha);
                    linha = reader.readLine();
                    aluno.setMatricula(linha);
                    DB.inserirAluno(aluno);
                }else if(linha.equals("Professor")){
                    Professor professor = new Professor();
                    linha = reader.readLine();
                    professor.setNome(linha);
                    linha = reader.readLine();
                    professor.setMatricula(Integer.parseInt(linha));
                    linha = reader.readLine();
                    professor.setTitulacao(linha);            
                    professores.add(professor); 
                }else if(linha.equals("Aula")){
                    Aula aula = new Aula();
                    linha = reader.readLine();
                    aula.setData(linha);
                    linha = reader.readLine();
                    aula.setConteudo(linha);          
                    aulas.add(aula); 
                }else if(linha.equals("Disciplina")){
                    Disciplina disciplina = new Disciplina();
                    linha = reader.readLine();
                    disciplina.setNome(linha);
                    linha = reader.readLine();
                    disciplina.setCreditos(Integer.parseInt(linha));
                    linha = reader.readLine();
                    disciplina.setSemestre(Integer.parseInt(linha));           
                    disciplinas.add(disciplina);             
                }else if(linha.equals("Turma")){
                    Turma turma = new Turma();
                    linha = reader.readLine();
                    
                    // ao incluir professor para TURMA, utilizar MATRICULA !!! 
                    
                    for(int i = 0; i < professores.size(); i++){               
                        if(Integer.parseInt(linha) == professores.get(i).getMatricula()){
                            turma.setProfessor(professores.get(i));
                        }  
                    }
                    
                    if(turma.getProfessor() == null){
                        System.out.println("Professor nao cadastrado, cadastro de TURMA cancelado");
                        continue;
                    }
                        
                    linha = reader.readLine();                                       
                    for(int i = 0; i < disciplinas.size(); i++){               
                        if(linha.equals(disciplinas.get(i).getNome())){
                            turma.setDisciplina(disciplinas.get(i));
                        }  
                    }
                    
                    if(turma.getDisciplina() == null){
                        System.out.println("Disciplina nao cadastrada, cadastro de TURMA cancelado");
                        continue;
                    }
                    
                    linha = reader.readLine();                        
                    turma.setDiaDaSemana(linha);            
                    turmas.add(turma);                                       
                }else if(linha.equals("1")){  
                }else if(linha.equals("2")){
                }else if(linha.equals("3")){
                }else if(linha.equals("4")){
                }else if(linha.equals("5")){
                }else if(linha.equals("6")){
                }   
            }DB.desconecta(); 
        }  
        catch (IOException e){  
            System.out.println("Erro: "+ e);  
        } 
    }
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DB{

    private static String driver = "org.postgresql.Driver";
    private static String inicializacao = "jdbc:postgresql://localhost/diarioDeClasse";
    private static String usuario = "postgres";
    private static String senha = "12345";  
    private static Connection con = null;
    private static PreparedStatement query;
    private static ResultSet r;
    
    public static void die(Exception e){
        e.printStackTrace(System.err);
        System.exit(1);
    }
    
    public static void conecta(){           
        try{
        // Carregar drivers    
            Class.forName(driver);
        }catch(Exception e){
            die(e);
        }
        // Conectar banco de Dados
        try{
            con = DriverManager.getConnection(inicializacao, usuario, senha);
        }catch (SQLException e){
            die(e);
        }
        // Criar Statement SQL
        Statement st = null;
        
        try{
            st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
        }catch(SQLException e){
            die(e);
        }
       
        try{    
            st = con.createStatement();            
            st.executeUpdate("DROP TABLE alunos");
            st.executeUpdate("CREATE TABLE alunos (matricula VARCHAR(5) PRIMARY KEY, nome VARCHAR(30))");
            
            st.close();                                     
        }catch(SQLException e){
            System.err.println("Erro na criacao do banco de dados.");
            System.err.println(e.getMessage());
        }
    }
 
    public static void desconecta(){
        try{
            con.close();
            }catch (SQLException e){
            e.printStackTrace();
        }
    }
    
    public static void inserirAluno(Aluno aluno){
        try{             
            query = con.prepareStatement("insert into alunos(matricula, nome) values (?,?)");
            query.setString(1, aluno.getMatricula());
            query.setString(2, aluno.getNome());
            query.close();            
        }catch (SQLException e) {
            e.printStackTrace();
        }
    }
    /*
    public ArrayList<Cliente> ListaCliente(){
        ArrayList<Cliente> lista = new ArrayList<Cliente>();
        try{
            con = DriverManager.getConnection("jdbc:mysql://localhost/mercado",
                    "root",
                    "root");
            query = con.prepareStatement("select * from cliente");
            r = query.executeQuery();
            while(r.next()){
                Cliente c = new Cliente();
                c.setCodigo(r.getInt("codigo"));
                c.setNome(r.getString("nome"));
                c.setEndereco(r.getString("endereco"));
                c.setBairro(r.getString("bairro"));
                c.setCidade(r.getString("cidade"));
                c.setEstado(r.getString("estado"));
                lista.add(c);
            }
            r.close();
            query.close();
            con.close();
        }catch(SQLException sql){
            sql.printStackTrace();
        }
        return lista;
    }
    public Cliente RetornaCliente(String codigo) throws SQLException{
        Cliente cliente = new Cliente();
        con = DriverManager.getConnection("jdbc:mysql://localhost/mercado",
                "root",
                "root");
        query = con.prepareStatement("select * from cliente where codigo=?");
        query.setInt(1,Integer.parseInt(codigo));
        r = query.executeQuery();
        r.next();
        cliente.setCodigo(r.getInt("codigo"));
        cliente.setNome(r.getString("nome"));
        cliente.setEndereco(r.getString("endereco"));
        cliente.setBairro(r.getString("bairro"));
        cliente.setCidade(r.getString("cidade"));
        cliente.setEstado(r.getString("estado"));
        r.close();
        query.close();
        con.close();
        return cliente;
        
    }
    public boolean AtualizaCliente(Cliente cliente){
        try{
            con = DriverManager.getConnection("jdbc:mysql://localhost/mercado",
                    "root",
                    "root");
            query = con.prepareStatement("update cliente set " +
                    "nome=?," +
                    "endereco=?," +
                    "bairro=?," +
                    "cidade=?," +
                    "estado=? where codigo=?");
            query.setString(1, cliente.getNome());
            query.setString(2, cliente.getEndereco());
            query.setString(3, cliente.getBairro());
            query.setString(4, cliente.getCidade());
            query.setString(5, cliente.getEstado());
            query.setInt(6,cliente.getCodigo());
            if(query.executeUpdate()>0){
                v = true;
            }else{
                v = false;
            }
            query.close();
            con.close();
            
        }catch (SQLException e) {
            e.printStackTrace();
        }
        return v;
    }
    */
}

2 Respostas

jamirdeajr

Olá caiodorn,

Parece que só faltou ou query.executeUpdate:

public static void inserirAluno(Aluno aluno){ try{ query = con.prepareStatement("insert into alunos(matricula, nome) values (?,?)"); query.setString(1, aluno.getMatricula()); query.setString(2, aluno.getNome()); query.executeUpdate(); query.close(); }catch (SQLException e) { e.printStackTrace(); } }
Aproveitando,
executeQuery() - É geralmente usado para ler o conteúdo de um banco de dados, o retorno será na forma de um recordset.
executeUpdate() - É usado para alterar o banco de dados, exemplo: DROP TABLE or DATABASE, INSERT into TABLE, UPDATE TABLE, DELETE from TABELA. O retorno será um inteiro indicando o número de alterações feitas.

caiodorn

Nossa, cara… que boca-aberta hehe

Valeu mesmo!

:slight_smile:

Criado 28 de novembro de 2011
Ultima resposta 29 de nov. de 2011
Respostas 2
Participantes 2