Criei uma um campo “sit_cadastro” do tipo integer no banco, gostaria de Armazenar valor 0 ou 1 nele (BLOQUEADO OU NAO), usando uma ChekBox.**
**o numero “6” representa a posicao da coluna “sit_cadastro” no banco , “cbUsuSitCads” e o nome da minha varial checkBox e pst é a abreviacao do “PreparedStatement”.
pst.setString (6, (cbUsuSitCadas.getText()));
Fala ai Mauro_Silva, bom dia
O ideal é que o campo no postgres seja do tipo BIT pois esse só aceita valores 0 ou 1. Definir esse tipo de campo como integer vc permite que erros possam ocorrer, do tipo dados incorretos serem armazenados tipo o campo aceita 6 , 7 89, 90.
Abraços
Max
Blz FacaNaCaveira, entao brother, mais esse e apenas um checkBox, o usuario nao vai colocar numeros, apenas marcar(bloquear o usuario) ou desmarcar (desbloquear o usuario) acho que pode continuar como int, eu so nao sei como fazer essa verificacao no codigo, caso marcado verdadeiro ou seja 1 desmarcado falso 0
private void adicionar(){
String sql = "INSERT INTO public.usuario (id, login, nome, senha, id_tiposetor, id_situacaocadastro, id_loja) values(?, ?, ?, ?, ?, ?, ?)";
try {
pst = conexao.prepareStatement(sql);
pst.setInt(1,Integer.parseInt(txtUsuId.getText()));
pst.setString(2,txtUsuLogin.getText());
pst.setString(3,txtUsuNome.getText());
pst.setInt(4,Integer.parseInt(pwUsuSenha.getText()));
pst.setInt(5, Integer.parseInt(txtUsuIdSetor.getText()));
pst.setString (6, (cbUsuSitCadas.getText()));
pst.setString(7,txtUsuIdLoja.getText());
// A LINHA A BAIXO ATUALIZA A TABELA NO BANCO
pst.executeUpdate();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
Já tem tempo que não mexo com swing, mas se me lembro um checkbox em swing tem o método isSelected que retorna true se está selecionado ou false caso não.
Por questão de boas práticas e se no futuro vc for melhorar o código, na verdade mais ainda por questão de segurança o certo para ficar no campo do BD é ser do tipo boolean isso evitará problemas que vc poderá ter e não vai saber, então é melhor se prevenir agora:
- Crie o campo na tabela que seja do tipo boolean e faça:
pst.setBoolean(6,cbUsuSitCadas.isSelected());
Veja que fica totalmente explícito o que o código tá fazendo e evitando problemas que poderão ocorrer no futuro.
Acredito que no seu banco de dados você esteja armazenando um valor do tipo char(1) para o campo id_situacaocadastro, sendo assim você armazena possíveis valores como A para cadastros Ativos e B para cadastros Bloqueados.
pst.setString(6,cbUsuSitCadas.isSelected() ? "'B'" : "'A'");
Eu ja passei por isso uma vez, fiquei perdido em como salvar os dados do Checkbox.
Eu tinha alguns Checkboxes para poder controlar o que funcionário ia poder fazer no sistema, como: cadastro(funcionario, produto, venda), venda mensal, pesquisa, etc.
Eu fiz o seguinte: criei um campo do tipo tinyint(1) no banco e uma variavel boolean para controlar cada ação que poderia ser feito.
psg.setBoolean(3, funcionario.isCadastrarProduto());
Quando você salva no banco um valor boolean true, o tinyint fica com valor 1, se for false fica com 0.
Para receber o valor do banco, você faz: resultSet.getBoolean(numeroColuna);