Conexao de sistema java com bd dando erro

A conexão está ok, mas quando eu insiro um dado no formulário do médico e clico no botão salvar, da o seguinte erro:

Bom Dia, o próprio erro lhe diz o que se deve fazer…
Ele esta dizendo ( for input String : ‘’ " ).
Isso quer dizer que você esta passando um valor vazio para um campo que não pode ser vazio… faca o tratamento dos dados na sua clase antes de salvar.

1 curtida

Seu código deve está tentado converter uma String vazia ("") para número. Algo +/- assim:

String numero = "";
Integer n = Integer.parseInt(numero); // ERRO! java.lang.NumberFormatException: For input string: ""

Para evitar isso, faça as devidas validações nos dados recebidos do usuário.

1 curtida

Boa tarde! No caso, no banco de dados tem várias colunas como “null”, entção eu teria que passar todos esses dados então?

Esses são os atributos

Esse é o meu método “salvar”

o código do método “salvar”

   public void Salvar(ModeloMedico mod){
    conexaocontrole.conectarMysql(); //Pesquisar no Banco
    
    try {
        PreparedStatement pst = conexaocontrole.con.prepareStatement("insert into medico(nome,data_nasc,n_conselho,cpf,rg,org_emissor,estado_civil,sexo,end_pessoal,n_end_pessoal,compl_end_pessoal,bair_end_pessoal,cep_end_pessoal,cid_end_pessoal,uf_end_pessoal,tel_res_end_pessoal,tel_cel_end_pessoal,end_profi,n_end_profi,compl_end_profi,bair_end_profi,cep_end_profi,cid_end_profi,uf_end_profi,crm,esp_prin,clinico,cirurgico,titulo,Instituicao,email,site,tel_profi,cur_lat,faculdade,inst_fac,ano_con_fac,mestrado,inst_mes,ano_con_mes,doutorado,inst_dou,ano_con_dou,posdoutorado,inst_posdou,ano_con_posdou,docencia,inst_docen) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
        pst.setString(1,mod.getNome());
        pst.setString(2,mod.getData_nasc());
        pst.setInt(3,mod.getN_conselho());
        pst.setInt(4,mod.getCpf());
        pst.setInt(5,mod.getRg());
        pst.setString(6,mod.getOrg_emissor());
        pst.setString(7,mod.getEstado_civil());
        pst.setString(8,mod.getSexo());
        pst.setString(9,mod.getEnd_pessoal());
        pst.setInt(10,mod.getN_end_pessoal());
        pst.setString(11,mod.getCompl_end_pessoal());
        pst.setString(12,mod.getBair_end_pessoal());
        pst.setString(13,mod.getCep_end_pessoal());
        pst.setString(14,mod.getCid_end_pessoal());
        pst.setString(15,mod.getUf_end_pessoal());
        pst.setString(16,mod.getTel_res_end_pessoal());
        pst.setString(17,mod.getTel_cel_end_pessoal());
        pst.setString(18,mod.getEnd_profi());
        pst.setInt(19,mod.getN_end_profi());
        pst.setString(20,mod.getCompl_end_profi());
        pst.setString(21,mod.getBair_end_profi());
        pst.setString(22,mod.getCep_end_profi());
        pst.setString(23,mod.getCid_end_profi());
        pst.setString(24,mod.getUf_end_profi());
        pst.setInt(25,mod.getCrm());
        pst.setString(26,mod.getEsp_prin());
        pst.setString(27,mod.getClinico());
        pst.setString(28,mod.getCirurgico());
        pst.setInt(29,mod.getTitulo());
        pst.setString(30,mod.getInstituicao());
        pst.setString(31,mod.getEmail());
        pst.setString(32,mod.getSite());
        pst.setString(33,mod.getTel_profi());
        pst.setString(34,mod.getCur_lat());
        pst.setString(35,mod.getFaculdade());
        pst.setString(36,mod.getInst_fac());
        pst.setString(37,mod.getAno_con_fac());
        pst.setString(38,mod.getMestrado());
        pst.setString(39,mod.getInst_mes());
        pst.setString(40,mod.getAno_con_mes());
        pst.setString(41,mod.getDoutorado());
        pst.setString(42,mod.getInst_dou());
        pst.setString(43,mod.getAno_con_dou());
        pst.setString(44,mod.getPosdoutorado());
        pst.setString(45,mod.getInst_posdou());
        pst.setString(46,mod.getAno_con_posdou());
        pst.setString(47,mod.getDocencia());
        pst.setString(48,mod.getInst_docen());
        
        pst.execute();
        JOptionPane.showMessageDialog(null, "Dados Inseridos com Sucesso! ");
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Dados Nao Inseridos com Sucesso! \nERRO: "+ex);
    }
    
    conexaocontrole.desconectar();
}

Inseri todos os dados com exceção das “jCheckBox”, pq n sei o comando pra setar pro banco
o erro seguinte aparece

Revise este método.

1 curtida

Me diz uma coisa, as colunas do tipo date no mysql são Strings em java tbm?

Elas são do tipo date, mas o banco de dados vai te fornecer uma função que retorna a hora em string, atendendo a sua necessidade.
Ex.:
SELECT * FROM cad_clientes WHERE DATE_FORMAT(DataCadastro, ‘%Y-%m-%d’) = CURDATE();
Fonte: https://pt.stackoverflow.com/questions/111179/pegar-data-atual-no-mysql
Outra coisa, você preisa estudar o modelo entidade relacionamento, pois seu banco de dados está mal estruturado.
Pra fins de estudo ok, mas pra fins de evolução, estude o modelo.
Estude também teoria dos conjuntos.
Obs.: eu não sei mySql.

1 curtida

Ok amigo, obrigado pelas dicas, só mais uma dúvida

como eu faço para parar duas ou mais jcheckbox por string?
assim não funciona
mod.setSexo((String)jCheckBoxSexMascCadMed.getS);

Ahhh! eu eu sei mysql, n fiz relações ainda, pois só tenho essas tabela “medico” rs

Pode fazer assim:
mod.setSexo(jCheckBoxSexMascCadMed.getText());

Qual vai ser a dor de cabeça, quando construir o modelo:
Vai ter que refatorar o método salvar, pois cada tabela vai exigir uma inserção especifica, em uma ordem específica, respeitando chaves primarias, estrangeiras, únicas e o que mais se fizer necessário.
Para fins de desenvolvimento vai atrasar um pouco, o lado bom é que não deixa de ser um aprendizado.
Té+

1 curtida

Atualizei o BD, tinham uns tipos de dados diferentes, mas apareceu esse novo erro, juro q to revirando tudo e n acho

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "Sim"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at visao.FormMedico.jButtonSalvarNovoCadMedActionPerformed(FormMedico.java:1017)
at visao.FormMedico.access$1400(FormMedico.java:17)
at visao.FormMedico$15.actionPerformed(FormMedico.java:858)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Poste o método jButtonSalvarNovoCadMedActionPerformed, ele está por volta da linha 1017.
A linha 1017 deve ser a linha com erro.
Você está tentanto fazer um parse com string ( “sim”) e deveria ser um número.

1 curtida
private void jButtonSalvarNovoCadMedActionPerformed(java.awt.event.ActionEvent evt) {                                                        

    //Dados Pessoas
    mod.setNome(jTextFieldNomCadMed.getText());
    mod.setData_nasc(jTextFieldDatNasCadMed.getText());
    mod.setN_conselho(Integer.parseInt(jTextFieldNConselhoCadMed.getText()));
    mod.setCpf(Integer.parseInt(jTextFieldCpfCadMed.getText()));
    mod.setRg(Integer.parseInt(jTextFieldRgCadMed.getText()));
    mod.setOrg_emissor(jTextFieldOrgEmiCadMed.getText());
    mod.setEstado_civil((String)jComboBoxEstCivCadMed.getSelectedItem());
    mod.setSexo(jCheckBoxSexMascCadMed.getText());
    mod.setSexo(jCheckBoxSexFemCadMed.getText());
    mod.setEnd_pessoal(jTextFieldEndPessoalCadMed.getText());
    mod.setN_end_pessoal(Integer.parseInt(jTextFieldNumEndPessoalCadMed.getText()));
    mod.setCompl_end_pessoal(jTextFieldComplEndPessoalCadMed.getText());
    mod.setBair_end_pessoal(jTextFieldBaiEndPessoalCadMed.getText());
    mod.setCep_end_pessoal(jTextFieldCepEndPessoalCadMed.getText());
    mod.setCid_end_pessoal(jTextFieldCidEndPessoalCadMed.getText());
    mod.setUf_end_pessoal(jTextFieldUfEndPessoalCadMed.getText());
    mod.setTel_res_end_pessoal(jTextFieldTelResPessoalCadMed.getText());
    mod.setTel_cel_end_pessoal(jTextFieldTelCelPessoalCadMed.getText());
    
    //Dados Profissionais
    
    mod.setEnd_profi(jTextFieldEndProCadMed.getText());
    mod.setN_end_profi(Integer.parseInt(jTextFieldNumEndProCadMed.getText()));
    mod.setCompl_end_profi(jTextFieldComplProCadMed.getText());
    mod.setBair_end_profi(jTextFieldBaiProCadMed.getText());
    mod.setCep_end_profi(jTextFieldCepProCadMed.getText());
    mod.setCid_end_profi(jTextFieldCidProCadMed.getText());
    mod.setUf_end_profi(jTextFieldUfProCadMed.getText());
    mod.setCrm(Integer.parseInt(jTextFieldCrmCadMed.getText()));
    mod.setEsp_prin(jTextFieldEspPrinCadMed.getText());
    mod.setClinico(jCheckBoxEspClinicoCadMed.getText());
    mod.setCirurgico(jCheckBoxEspCirurgicoCadMed.getText());
    mod.setTitulo(Integer.parseInt(jCheckBoxTitSimCadMed.getText()));
    mod.setInstituicao(jTextFieldInstDadProCadMed.getText());
    mod.setEmail(jTextFieldEmaCadMed.getText());
    mod.setSite(jTextFieldSiteCadMed.getText());
    mod.setTel_profi(jTextFieldTelProCadMed.getText());
    mod.setCur_lat(jTextFieldCurLatCadMed.getText());
    
    //Formação Profissional
    
    mod.setFaculdade(jTextFieldFacCadMed.getText());
    mod.setInst_fac(jTextFieldInstFacCadMed.getText());
    mod.setAno_con_fac(jTextFieldAnoConcFacCadMed.getText());
    mod.setMestrado(jCheckBoxMesSimCadMed.getText());
    mod.setInst_mes(jTextFieldInstMesCadMed.getText());
    mod.setAno_con_mes(jTextFieldAnoConMesCadMed.getText());
    mod.setDoutorado(jCheckBoxlDouSimCadMed.getText());
    mod.setInst_dou(jTextFieldInstDouCadMed.getText());
    mod.setAno_con_dou(jTextFieldAnoConDouCadMed.getText());
    mod.setPosdoutorado(jCheckBoxPosDouSimCadMed.getText());
    mod.setInst_posdou(jTextFieldInstPosDouCadMed.getText());
    mod.setAno_con_posdou(jTextFieldAnoConPosDouCadMed.getText());
    mod.setDocencia(jCheckBoxDocenSimCadMed.getText());
    mod.setInst_docen(jTextFieldInstDocenCadMed.getText());
    
    control.Salvar(mod);
}

Para as instruções a seguir, quando preencher o formulário as variáveis relacionadas aos campos de texto(JTextField), devem conter exclusivamente números

    mod.setN_conselho(Integer.parseInt(jTextFieldNConselhoCadMed.getText()));
    mod.setCpf(Integer.parseInt(jTextFieldCpfCadMed.getText()));
    mod.setRg(Integer.parseInt(jTextFieldRgCadMed.getText()));
    mod.setN_end_pessoal(Integer.parseInt(jTextFieldNumEndPessoalCadMed.getText()));
    mod.setN_end_profi(Integer.parseInt(jTextFieldNumEndProCadMed.getText()));
    mod.setCrm(Integer.parseInt(jTextFieldCrmCadMed.getText()));

/A instrução a seguir esta errada, pois o chekbox tem o texto sim, quando você faz getText(), recebe “sim”, e não um número, gerando o erro atual/

    mod.setTitulo(Integer.parseInt(jCheckBoxTitSimCadMed.getText()));

Substitua a instrução por: mod.setTitulo(Integer.parseInt(jCheckBoxTitSimCadMed.getText().equals("sim")?"1":"0"));

1 curtida

Ok amigo, e enquanto ao “Nao” do checkbox ficaria assim?

    mod.setTitulo(Integer.parseInt(jCheckBoxTitSimCadMed.getText().equals("sim")?"1":"0"));
    mod.setTitulo(Integer.parseInt(jCheckBoxTitNaoCadMed.getText().equals("nao")?"1":"0"));

Outra dúvida tbm,
Tenho tbm esses dois jCheckBoxs, qual a sintaze correta pra eles? tipo, se n for “clínico” é cirúrgico;

Ficaria assim?
mod.setTitulo(jCheckBoxEspClinicoCadMed.getText().equals(“clinico”)?“1”:“0”);
mod.setTitulo(jCheckBoxEspCirurgicoCadMed.getText().equals(“cirurgico”)?“1”:“0”);

Quem define a lógica é a sua necessidade de implementação, pode ser:
mod.setTitulo(Integer.parseInt(jCheckBoxTitNaoCadMed.getText().equals(“nao”)?“35”:“10”));
mod.setTitulo(Integer.parseInt(jCheckBoxTitNaoCadMed.getText().equals(“nao”)?“0”:“1”));
Mas concerteza não pode ser
mod.setTitulo(Integer.parseInt(jCheckBoxTitNaoCadMed.getText().equals(“nao”)?“1”:“0”));
pois vai confundir com o processamento do outro JCheckBox.
Quem define é a necessidade de sua aplicação.


Assista todas as aulas do canal é melhor que aprender em pedaços.
Té+

1 curtida

Acabei de assistir, mas fala de outra coisa nesse vídeo, minha dúvida é de como eu vou passar os textos “sim” e “nao” quando eu marcar somente uma caixa e pra q serve esse final ?“35”:“10” ?

O canal é seu?

Fiz o que vc disse e agora deu esse erro ma classe modelomedico