Como criar um contador java+mysql?

6 respostas
R

Bom dia!

Como faço para em um sistema de marcação de exames, atualizar a quantidade de exames realizados, neste caso, o campo "confirmados":
public class Exame {

    int id;
    String nome;
    String descricao;
    int limiteMensal;
    int confirmados;

    public int getConfirmados() {
        return confirmados;
    }

    public void setConfirmados(int confirmados) {
        this.confirmados = confirmados;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getLimiteMensal() {
        return limiteMensal;
    }

    public void setLimiteMensal(int limiteMensal) {
        this.limiteMensal = limiteMensal;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}
O código para o lançamento que estou usando:
public void autorizaExame(AutorizacaoExame autorizacao) {
        String sql = "insert into autorizacaoexame (exame,prestadorExame,"
                + "dataInicio,dataFinal,paciente,origem,medico,cartaoSUS,"
                + "autorizador,dataAutorizacao,telefonePaciente)"
                + " values (?,?,?,?,?,?,?,?,?,?,?)";

        try {
            // PreparedStatement para inserção
            PreparedStatement stmt = connection.prepareStatement(sql);

            // Seta os valores
            stmt.setString(1, autorizacao.getExame());
            stmt.setString(2, autorizacao.getPrestadorExame());
            stmt.setString(3, autorizacao.getDataInicio());
            stmt.setString(4, autorizacao.getDataFinal());
            stmt.setString(5, autorizacao.getPaciente());
            stmt.setString(6, autorizacao.getOrigem());
            stmt.setString(7, autorizacao.getMedico());
            stmt.setString(8, autorizacao.getCartaoSUS());
            stmt.setString(9, autorizacao.getAutorizador());
            stmt.setString(10, autorizacao.getDataAutorizacao());
            stmt.setString(11, autorizacao.getTelefonePaciente());

            // Executa
            stmt.execute();
            stmt.close();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Erro ao marcar exame. Contate o desenvolvedor!");
        }
    }
Sou iniciante, agradeço pela ajuda!

Obrigado!

6 Respostas

drigo.angelo

Posso não ter entendido direito, mas você quer fazer um UPDATE?

tipo assim:

String sql = "UPDATE autorizacaoexame " + " SET exame = ?, " + " prestadorExame = ?," + " dataInicio = ?, ...... ....

erictorti

drigo.angelo:
Posso não ter entendido direito, mas você quer fazer um UPDATE?

tipo assim:

String sql = "UPDATE autorizacaoexame " + " SET exame = ?, " + " prestadorExame = ?," + " dataInicio = ?, ...... ....

Opa. Se for isso não esquecer o WHERE :slight_smile:

R

Sim, acredito que tem que ser feito o update, mas não sei como fazer essa contagem.

Vou ilustrar minha dúvida em outro exemplo mais fácil de entender: uma classe “Produto” tem o campo “QuantidadeEstoque”. Após uma compra de um determinado produto, como eu faço para atualizar seu estoque. Tinha 2 unidades, comprei 3, logo tenho 5. É esse método de atualização que não sei fazer.

Agradeço pela ajuda!

erictorti

Uma idéia plausível seria fazer algo equivalente aos métodos saca(valor) e deposita(valor) de uma conta bancária.

class Produto {

private int quantidade;

public void retira(int quantidade) {
	this.quantidade - quantidade;
}
	
public void repoe(int quantidade) {
	this.quantidade + quantidade;
}
}

Naturalmente, estes métodos estão bem resumidos. Provavelmente você vai querer umas validações dentro deles.

Quando for persistir o Produto, faça um update no banco atualizando o campo quantidade.

Edição: Acho que não prestei atenção na definição do seu problema. :frowning: Esta sugestão seria pra um problema de estoque.
Talvez você possa usar um método fazExame(), que entre outras coisas, marca quantidade++

R

Entendo o raciocínio, mas não consigo chegar a uma conclusão de como faze-lo pelo mysql.

erictorti

Oi, Rodrigo,

Desculpe pela mensagem anterior. Acho que não tem muito a ver com seu problema mesmo. Na hora de responder, devo ter me confundido com algum outro thread que estava lendo.

A idéia é delegar a responsabilidade de contar os exames para o banco de dados, sem fazer nenhum código java que se responsabilize por incrementar o contador?

Criado 13 de janeiro de 2011
Ultima resposta 13 de jan. de 2011
Respostas 6
Participantes 3