Update no banco com JSP

4 respostas
marcosmhs

Olá,

estou com um problema ao fazer um update no JSP, Insert vai de boa mas o update nçao. Vejam só:

public jaQuery(Connection Conexao) {
        try {
            this.Conexao = Conexao;
            stm          = Conexao.createStatement();
            ativa        = false;
        } catch(SQLException e) {
            ativa    = false;
            mensagem = "Erro ao criar Query! " + e.toString();
        }
    }
    // SQL foi passada para uma variável
    public void Execute() {
        try {
            stm.execute(SQL);
            ativa = true;
        }
        catch(SQLException e) {
            ativa    = false;
            mensagem = "Erro ao executar Query! " + e.toString();
        }
    }

Na classe eu tenho um método chamado pela página jsp:

private boolean alterarStatus(String status) {
        boolean retorno  = false;
        jaQuery qryQuery = new jaQuery(conexao.conexaoDB);
        SQL = " UPDATE APPDB.SIS_USUARIO"
            + " SET USU_TIPO = " + "\"" + status + "\""
            + " WHERE  USU_CODIGO = :USU_CODIGO";

        qryQuery.SQL(SQL);
        qryQuery.ParamByName("USU_CODIGO", this.usuCodigo);
        qryQuery.Execute();

        retorno  = qryQuery.isAtiva();
        mensagem = qryQuery.getMensagem();
        qryQuery.Close(false);

        return retorno;
    }

Quando eu chamo o método vem o erro:
java.lang.NullPointerException

Essa mensagem ocorre na linha

qryQuery.Close(false);

Esse é o conteúdo do método:

public void Close(boolean Disconectar) {
        try {
            resultado.close();
            if (Disconectar == true)
                Conexao.close();
        }
        catch(SQLException e) {
            ativa    = false;
            mensagem = "Erro ao fechar Query! " + e.toString();
        }
    }

Alguém sabe como resolver esse caso?

4 Respostas

jbmsegundo

Cara,

Com base no que você diz, o erro ocorre no método close da tua classe jaQuery. Poe o código da classe toda aí que pode facilitar.

[]s

marcosmhs

jbmsegundo:
Cara,

Com base no que você diz, o erro ocorre no método close da tua classe jaQuery. Poe o código da classe toda aí que pode facilitar.

[]s

package jaDB;

import java.sql.*;

public class jaQuery {

    private Connection Conexao = null;
    private boolean    ativa   = false;
    private ResultSet  resultado;
    private Statement  stm;
    private String     mensagem = "";
    private String     SQL      = "";

    public Connection getConexao()   {return Conexao;}
    public ResultSet  getResultado() {return resultado;}
    public boolean    isAtiva()      {return ativa;}
    public String     getMensagem()  {return mensagem;}

    public jaQuery(Connection Conexao) {
        try {
            this.Conexao = Conexao;
            stm          = Conexao.createStatement();
            ativa        = false;
        } catch(SQLException e) {
            ativa    = false;
            mensagem = "Erro ao criar Query! " + e.toString();
        }
    }
    public void SQL(String SQL) {
        this.SQL = SQL;
    }

    public void ParamByName (String ParamName, Integer Valor){
        ParamByName(ParamName, Integer.toString(Valor));
    }

    public void ParamByName (String ParamName, String Valor){
        try {
            if (SQL.equals("") == false)
                SQL = SQL.replaceAll(":" + ParamName, "\"" + Valor + "\"");
        }
        catch (Exception e) {
            mensagem = "Erro ao substituir parâmetro! " + e.toString();
        }
    }

    public void Open() {
        try {
            resultado = stm.executeQuery(SQL);
            resultado.next();
            ativa     = true;
        }
        catch(SQLException e) {
            ativa    = false;
            mensagem = "Erro ao abrir Query! " + e.toString();
        }
    }

    public void Execute() {
        try {
            stm.execute(SQL);
            ativa = true;
        }
        catch(SQLException e) {
            ativa    = false;
            mensagem = "Erro ao executar Query! " + e.toString();
        }
    }

    public void Close(boolean Disconectar) {
        try {
            resultado.close();
            if (Disconectar == true)
                Conexao.close();
        }
        catch(SQLException e) {
            ativa    = false;
            mensagem = "Erro ao fechar Query! " + e.toString();
        }
    }
    
    public String FieldByName (String FieldName){
        return FieldByName(FieldName, null);
    }

    public String FieldByName (String FieldName, String NullValue){
        String valor = null;
        try {
            if (resultado == null)
                ativa = false;
            else {
                if (resultado.getString(FieldName) == null)
                    valor = NullValue;
                else
                    valor = resultado.getString(FieldName);
                ativa = true;
            }
        }
        catch(SQLException e) {
            ativa    = false;
            mensagem = "Field invalido!" + e.toString();
        }
        return valor;
    }

    public int RecordCount() {
        int quantidade = 0;
        try {
            resultado.first();
            do {
                quantidade++;
            } while(resultado.next());
        } catch(SQLException e) {
            ativa    = false;
            mensagem = "Erro ao executar Query! " + e.toString();
        }
        return quantidade;
    }

    public boolean Next() {
        boolean retorno = false;
        try {
            if(resultado.next()){
                retorno=true;
            }
        }
        catch(SQLException e) {
            ativa    = false;
            mensagem = "Erro ao executar Query! " + e.toString();
        }
        return retorno;
    }

    public boolean First() {
        try {
            if (resultado.first())
                ativa = true;
        } catch(SQLException e) {
            ativa    = false;
            mensagem = "Erro ao executar Query! " + e.toString();
        }

        return ativa;
    }

    public boolean EOF () {
        boolean retorno = false;
        try {
           retorno = resultado.isLast();
        } catch (SQLException e) {
            ativa = false;
            mensagem = "Erro ao executar Query! " + e.toString();
        }

        return retorno;
    }
}
jbmsegundo

Cara,

verifica esse teu resultset com o nome de resultado, pelo que vi ele não foi criado em lugar nenhum, por isso o java.lang.NullPointerException .

[]s

marcosmhs

Rapaz era isso mesmo!!! Eu devia ter previsto isso! muito obrigado pela ajuda!

Criado 26 de outubro de 2010
Ultima resposta 29 de out. de 2010
Respostas 4
Participantes 2