java.lang.NullPointerException: не удается вызвать «Modelo.Cliente.setNumeroIdentificacion (int)», потому что «this.c» имеет значение null

#java #sql #jsp

#java #sql #jsp

Вопрос:

Я использую хранимые процедуры для поиска идентификатора пользователя, но при поиске person он указывает, что он равен null, я не понимаю, почему это указывает, что значение равно null, в этой строке кода cs.SetInt (1, identificationNumber); уже имеет значение

     public Cliente buscarCliente(int numeroIdentificacion) throws ClassNotFoundException {

    // Instancia de la clase Cliente
    Cliente c = null;

    // Declaracion de variables
    Connection con = Conectar();
    ResultSet rs = null;
    CallableStatement cs = null;
    int resultado = 0;
    
    try {
        
        cs = con.prepareCall("{call dbo.SPBuscarCliente(?)}");
        cs.setInt(1, numeroIdentificacion);
        resultado = cs.executeUpdate();
        rs = cs.executeQuery();
        
        while(rs.next()){
            c = new Cliente();
            c.setId(rs.getInt(1));
            c.setNumeroIdentificacion(rs.getInt(2));
            c.setNombre(rs.getString(3));
            c.setPrimerApellido(rs.getString(4));
            c.setSegundoApellido(rs.getString(5));
            c.setDireccion(rs.getString(6));
            c.setEstado(rs.getString(7));
            
        }
        
    } catch (SQLException e){
       
        System.err.println(e);
        
    }
    
    return c;
}
 

Это моя процедура хранения

 ALTER PROCEDURE [dbo].[SPBuscarCliente]
-- Declaracion de variables
(@NumeroIdentificacion AS INT)
AS
BEGIN

    SELECT * FROM Cliente WHERE NumeroIdentificacion = @NumeroIdentificacion

END
 

Комментарии:

1. Некоторые sql-серверы не используют { … } при вызове из java. Попробуйте снять брекеты.

2. Почему вы работаете с хранимой процедурой, а не непосредственно с sql?

3. Пожалуйста, добавьте полную трассировку стека