Problema com PreparedStatement

Olá, eu de novo com perguntas básicas heheh

Seguinte criei uma classe AlunoDAO que processa um select no banco porém quando chega na linha q seta os parametros do PreparedStatement da erro naum sei o q acontece, vejam

java.util.List<Aluno> SelectAluno (String nome){
        // Atributos do Método
        java.sql.PreparedStatement stmt = null;
        java.util.List<Aluno> lista = new java.util.ArrayList<Aluno>();
        
        try{
            javax.swing.JOptionPane.showMessageDialog(null,"Pont 1");
        
            // Criando o SQL
            stmt = conexao.prepareStatement("SELECT * FROM aluno WHERE nome LIKE '?%'");
            
            javax.swing.JOptionPane.showMessageDialog(null,"Pont 2");

            // Atribuindo os valores ao PreparedStatement
            stmt.setString(1, nome); // O erro está aqui pelo debug q fiz
            
            javax.swing.JOptionPane.showMessageDialog(null,"Pont 3");
            // Executando 
            rs = stmt.executeQuery();
            javax.swing.JOptionPane.showMessageDialog(null,"Pont 4");
            // Preenchendo a Lista
            while (rs.next()){
                // Criando um objeto Aluno
                Aluno aluno_rs = new Aluno();

                // Processamento
                aluno_rs.setRa(rs.getInt("ra"));
                aluno_rs.setNome(rs.getString("nome"));
                aluno_rs.setEmail(rs.getString("email"));
                aluno_rs.setTelefone(rs.getString("telefone"));
                aluno_rs.setCelular(rs.getString("celular"));
                aluno_rs.setCurso(rs.getString("curso"));
                aluno_rs.setSerie(rs.getString("serie"));
                aluno_rs.setCampus(rs.getString("campus"));
                
                // Colocando o objeto na Lista
                lista.add(aluno_rs);
            }
           
            // Fechando o PreparedStatement
            stmt.close();
            
            // Fechando o ResultSet
            rs.close();
        } catch (Exception e){
            javax.swing.JOptionPane.showMessageDialog(null,"Erro ao " +
                    "processar a consulta na base de dados.");
        }
        return lista;
    }

Obs. ja fiz isto, porém passando um objeto, exemplo algumacoisa.getNome(), e dava certo pq num posso colocar uma varivel do tipo string.

Se alguém puder me ajudar,

Valeu

Paulo

Voce precisa nos dizer o que da errado.

Mas olhando o teu codigo, o problema esta aqui provavelmente

conexao.prepareStatement("SELECT * FROM aluno WHERE nome LIKE '?%'");

PreparedStatements nao funcionam direito com LIKE. Voce precisa fazer uma pequena trick para contornar isso. Mude o seu codigo para

conexao.prepareStatement("SELECT * FROM aluno WHERE nome LIKE ?");
// ....
stmt.setString(1, nome + "%");

Rafael

Rafael,

Brigadaum, deu certo fiz como vc disse.

Um Grande Abraço e até a próxima dúvida, rsrsrs. :smiley:

Valeu,

Paulo