Salvar colunas em branco

11 respostas
java
L

Alguém poderia me dar uma ajuda para salvar colunas em branco?

preciso que as colunas “ENCONTRADO,ENCONT_TEXTO,OBS,APROVADO” sejam salvas em branco que no caso são as :

pst.setString(30, Resultado_Numerico);//30
                pst.setString(31, Resultado_Texto);//31
                pst.setString(32, Observação);//32
                pst.setString(33, Aprovado);//33

Esse é o código que utilizo para salvar quando tem valores na coluna

int p = JOptionPane.showConfirmDialog(null, "Você deseja realmente salvar?", "Salvar", JOptionPane.YES_NO_OPTION);
            if (p == 0) {

                try {
                    Class.forName(Auxiliar.AcessoBanco.getDriver());
                    Connection con = DriverManager.getConnection(Auxiliar.AcessoBanco.getUrl(), Auxiliar.AcessoBanco.getUser(), Auxiliar.AcessoBanco.getPass());
                    for (int i = 0; i < CadresultadoTabela.getRowCount(); i++) {

                        String resultado_numerico = new String();
                        String resultado_texto = new String();
                        String observacao = new String();
                        String aprovado = new String();

                        try {
                            resultado_numerico = CadresultadoTabela.getValueAt(i, 30).toString();
                        } catch (Exception e) {
                            resultado_numerico = "";
                        }

                        try {
                            resultado_texto = CadresultadoTabela.getValueAt(i, 31).toString();
                        } catch (Exception e) {
                            resultado_texto = "";
                        }

                        try {
                            observacao = CadresultadoTabela.getValueAt(i, 32).toString();
                        } catch (Exception e) {
                            observacao = "";
                        }

                        try {
                            aprovado = CadresultadoTabela.getValueAt(i, 33).toString();
                        } catch (Exception e) {
                            aprovado = "";
                        }

                        if ((resultado_numerico != "" || resultado_texto != "") && aprovado != "") {

                            java.util.Date currentDate = GregorianCalendar.getInstance().getTime();
                            DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
                            String dateString = df.format(currentDate);

                            java.util.Date d = new java.util.Date();
                            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                            String timeString = sdf.format(d);

                            String value0 = timeString;
                            String values = dateString;
                            String sql = "INSERT INTO Resultado (ORDEM,LINHA,LINHA_TIPO,LINHA_SETOR,RCPERFIL,BPCS,"
                                    + "DPERFIL,PROJETO,OEM,N_DESENHO,N_PLANO,OPERACAO,EQUIPAMENTO,DTESTE,"
                                    + "RCOMPLEMENTO,RCTESTE,ESPEC_MIN,ESPEC_MAX,ESPEC_UNID,ESPEC_TEXTO,REFERENCIA,"
                                    + "FREQUENCIA,FREQ_UNID,PRODUTO,ORIGEM,RTIPO,ESPECIFICACAO,FREQ_TEXTO,LAB,"
                                    + "ENCONTRADO,ENCONT_TEXTO,OBS,APROVADO,DATA,HORA,REGISTRO,N_OP,BATCH,N_ETIQUETA,DATAM) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,'" + values + " " + value0 + "')";
                            PreparedStatement pst = con.prepareStatement(sql);

                            //                System.out.println();
                            int Ordem = Integer.parseInt(CadresultadoTabela.getValueAt(i, 1).toString());//1
                            String Linha = (CadresultadoTabela.getValueAt(i, 2).toString());//2
                            String Linha_Tipo = (CadresultadoTabela.getValueAt(i, 3).toString());//3
                            String Setor = (CadresultadoTabela.getValueAt(i, 4).toString());//4
                            int Perfil = Integer.parseInt(CadresultadoTabela.getValueAt(i, 5).toString());//5
                            String Bpcs = (CadresultadoTabela.getValueAt(i, 6).toString());//6
                            String Desc_Perfil = (CadresultadoTabela.getValueAt(i, 7).toString());//7
                            String Projeto = (CadresultadoTabela.getValueAt(i, 8).toString());//8
                            String OEM = (CadresultadoTabela.getValueAt(i, 9).toString());//9
                            String Nº_Desenho = (CadresultadoTabela.getValueAt(i, 10).toString());//10
                            String Nº_Plano = (CadresultadoTabela.getValueAt(i, 11).toString());//11
                            String Operação = (CadresultadoTabela.getValueAt(i, 12).toString());//12
                            String Equipamento = (CadresultadoTabela.getValueAt(i, 13).toString());//13
                            String Desc_Teste = (CadresultadoTabela.getValueAt(i, 14).toString());//14
                            String Complemento = (CadresultadoTabela.getValueAt(i, 15).toString());//15
                            String Cod_Teste = (CadresultadoTabela.getValueAt(i, 16).toString());//16
                            float Espec_Min = Float.parseFloat(CadresultadoTabela.getValueAt(i, 17).toString());//17
                            float Espec_Max = Float.parseFloat(CadresultadoTabela.getValueAt(i, 18).toString());//18
                            String Espec_Unid = (CadresultadoTabela.getValueAt(i, 19).toString());//19
                            String Espec_Texto = (CadresultadoTabela.getValueAt(i, 20).toString());//20
                            String Referência = (CadresultadoTabela.getValueAt(i, 21).toString());//21
                            int Frequência = Integer.parseInt(CadresultadoTabela.getValueAt(i, 22).toString());//22
                            String Freq_Unid = (CadresultadoTabela.getValueAt(i, 23).toString());//23
                            String Produto = (CadresultadoTabela.getValueAt(i, 24).toString());//24
                            String Origem = (CadresultadoTabela.getValueAt(i, 25).toString());//25
                            String Tipo = (CadresultadoTabela.getValueAt(i, 26).toString());//26
                            String Especificação = (CadresultadoTabela.getValueAt(i, 27).toString());//27
                            String Freq_Texto = (CadresultadoTabela.getValueAt(i, 28).toString());//28
                            String Laboratorio = (CadresultadoTabela.getValueAt(i, 29).toString());//29
                            String Resultado_Numerico = resultado_numerico;//30
                            String Resultado_Texto = resultado_texto;//31
                            String Observação = observacao;//32
                            String Aprovado = aprovado;//33

                            pst.setInt(1, Ordem);//1
                            pst.setString(2, Linha);//2
                            pst.setString(3, Linha_Tipo);//3
                            pst.setString(4, Setor);//4
                            pst.setInt(5, Perfil);//5
                            pst.setString(6, Bpcs);//6
                            pst.setString(7, Desc_Perfil);//7
                            pst.setString(8, Projeto);//8
                            pst.setString(9, OEM);//9
                            pst.setString(10, Nº_Desenho);//10
                            pst.setString(11, Nº_Plano);//11
                            pst.setString(12, Operação);//12
                            pst.setString(13, Equipamento);//13
                            pst.setString(14, Desc_Teste);//14
                            pst.setString(15, Complemento);//15
                            pst.setString(16, Cod_Teste);//16
                            pst.setFloat(17, Espec_Min);//17
                            pst.setFloat(18, Espec_Max);//18
                            pst.setString(19, Espec_Unid);//19
                            pst.setString(20, Espec_Texto);//20
                            pst.setString(21, Referência);//21
                            pst.setInt(22, Frequência);//22
                            pst.setString(23, Freq_Unid);//23
                            pst.setString(24, Produto);//24
                            pst.setString(25, Origem);//25
                            pst.setString(26, Tipo);//26
                            pst.setString(27, Especificação);//27
                            pst.setString(28, Freq_Texto);//28
                            pst.setString(29, Laboratorio);//29
                            pst.setString(30, Resultado_Numerico);//30
                            pst.setString(31, Resultado_Texto);//31
                            pst.setString(32, Observação);//32
                            pst.setString(33, Aprovado);//33

                            pst.setString(34, txt_data.getText());
                            pst.setString(35, txt_hora.getText());
                            pst.setString(36, txt_registro.getText());
                            pst.setString(37, txt_operacao.getText());
                            pst.setString(38, txt_batch.getText());
                            pst.setString(39, txt_N_Etiqueta.getText());

                            pst.executeUpdate();

                        }

                    }

                    JOptionPane.showMessageDialog(null, "Salvo com sucesso!");
                    PreencherTabela();
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e);
                }
            }

11 Respostas

F

Bom dia Lucas, não entendi direito o problema, acontece alguma exception ?, talvez o banco de dados não aceite a coluna salva como nuu.

porem existe umas melhorias que identifiquei por exemplo, você poderia fazer uma Connection factory para abrir suas conexões com o banco de dados ao inves de abri-las no teu DAO

Class.forName(Auxiliar.AcessoBanco.getDriver());
 Connection con = DriverManager.getConnection(Auxiliar.AcessoBanco.getUrl(), Auxiliar.AcessoBanco.getUser(), Auxiliar.AcessoBanco.getPass());

Você está declarando muitas variaveis dentro do for, seria melhor declara-las fora do laço for.

String resultado_numerico = new String();
 String resultado_texto = new String();
 String observacao = new String();
 String aprovado = new String();

não entendi direito o uso dos try catch na chamada do CadresultadoTabela, aparetimente vc esta pegando uma linha de uma JTable e configurando a variavel, não tem porque configura a variavel resultado_numero = “”, pois se entrar no catch seu codigo para a execução e não processara mais o método e não salvará nada.

no if é melhor fazer a comparação com equals ao inves de = , assim

if(!resultado_numero.equals("")), faça isso com todas as strings que você colocou no if.

ao terminar a execução do método não esqueça de fechar a conexao aberta

assim pst.close();
con.close();

resolvendo isso, acho que sana seu problema.

L

Bom Fábio, obrigado pela resposta. Fiz as alterações que você me disse e mesmo assim não funcionou. Verifiquei se é permitido null nas colunas e sim, são permitidos. Acontece que eu preciso salvar essas informações em nullo para substituir alguns teste que não foram salvos. Para isso eu preciso que sejam salvos, mas em nullo essas colunas acima. Será que você teria mais alguma dica? Grato!

L

Acho que descobri oq é… ele esta tentando salvar, ma so primeiro teste já esta salvo… como faço para que ele ignore o primeiro teste e pule para o de baixo e assim por diante ate achar o q falta?

F

quando você diz
"como faço para que ele ignore o primeiro teste e pule para o de baixo e assim por diante ate achar o q falta?"

você se refere a execução do método ? seria melhor você identificar a mensagem de erro que aparece,
fica muito difícil dizer algo sem a mensagem de erro.

porem , pelo que percebi você quer pegar cada linha da jtable e inserir no banco de dados, e uma das linhas já esta salva no banco, para ele não salvar, deve ter acontecido uma restrição de chave primaria, caso você só queira fazer um teste, para vÊ a execução do código, identifica o id que esta salvo e faça o if no teu código ignorando ele.

tipo

if(id != numero){

ai vc executa o seu método

}

ou você poderia apagar o registro no banco de dados.

L

Bom no caso como eu resolvi o problema com suas dicas… surgiu a duvida do seguinte… esses teste já são existentes e eu estou substituindo para que caso uma pessoa não tenha salvo, ele irá aparecer… mas acontece que se o primeiro teste já existir na tabela, ele já não testa os outros pq já da o erro de duplicado. Eu gostaria que ele ignorasse o duplicado e fosse para os próximos .

F

Se o caso for como to pensando, uma simples consulta já resolve, não deve ser muito custosa pois se trata de um campo indexado.

antes de inserir os dados na tabela no banco de dados, vc deve fazer um select para ve se aquele id existe no banco de dados,
se não existir, vc continua com teu insert.

faça uma string

String sql = “select id FROM tabela where id” = idQuevcQuerProcurar".

se isso ai retorna diferente de null ou “”, é pq o id já existe dai vc não faz o insert, se voltar igual a null ou “”, vc faz o insert.

L

nesse caso já não entendi, poderia me fazer uma explicação por favor?

L

Entendi, mas nesse caso não vai me adintar

L

precisava mesmo era de algo que toda x que o resultado fosse duplicado, ele apenas ignorasse e continuava tentar salvar os outros resultados.

F

isso resolve Lucas

faça um método nessa mesma classe assim

private boolean metodoProcuraSeJatem(Integer idqTaJTable){

String sql = SElect id FROM tabela WHERE id= + o idqTaNaJtable;

ResultSet rs = con.prepareStatement(sql);

//resto do codigo omitido

while(rs.next())
return false;

return true;

}

se o id ja existe esse método vai retorna false, se não ele vai retorna true

dai no metodo q vc ja tem faça um if usando a chamado no metodo q vc criou para verificar a existência do id

if(metodoProcuraSeJatem(idqTaJtable)){

aqui vc executa seu codigo normalmente

}

se vc não entendeu eu sugiro que você estude mais a api jdbc do java

L

Bom dia Fabiano, desculpa a demora, mas tive q viajar. no meu caso eu estou tipo cruzando 2 tabelas, eu pego o valor de um código de um teste em uma e o testa em outra, caso o teste não tenha ele substitui, caso ele ja tenha, ele continua a verificação.isso que eu queria.

Criado 10 de outubro de 2017
Ultima resposta 12 de out. de 2017
Respostas 11
Participantes 2