Javafree
 Forum   Topics   Author   Post 
Banco de Dados - JDBC / SQL Inserir dados em duas tabelas diferentes mas com chave estrangeira igual. xrafs Bom, já solucionei trocando a chave estrangeira.
Banco de Dados - JDBC / SQL Inserir dados em duas tabelas diferentes mas com chave estrangeira igual. xrafs Olá povo. Estou enfrentando um problema o qual tentei resolver de toda forma, com as maiores gambiarras possíveis, mas nada solucionou meu problema. O que se passa é o seguinte: Tenho duas tabelas (Fornecedor e Endereco) as quais estão ligadas no banco pela chave estrangeira codEndereco. Quando vou inserir as informações no banco, gostaria que codEndereco na inserção das duas tabelas fosse com o mesmo valor, indicando que uma pertence a outra. Segue os códigos dos implements das duas: [b]Inserindo Endereço:[/b] [code]@Override public void Cadastrar(Endereco endereco) { Connection con = new ConexaoUtil().criarConexao(); String sql = "insert into Endereco values (?, ?, ?, ?, ?, ?, ?);"; try { PreparedStatement stmt = con.prepareStatement(sql); stmt.setInt(1, 0); stmt.setString(2, CadFornecedor.rua); stmt.setString(3, CadFornecedor.bairro); stmt.setInt(4, CadFornecedor.numero); stmt.setString(5, CadFornecedor.complemento); stmt.setString(6, CadFornecedor.uf); stmt.setString(7, CadFornecedor.cidade); System.out.println("CADASTROU ENDEREÇO!"); stmt.executeUpdate(); } catch (SQLException ex) { ex.printStackTrace(); ex.getMessage(); } }[/code] [b]Inserindo Fornecedor:[/b] [code]@Override public void Cadastrar(Fornecedor fornecedor) { Connection con = new ConexaoUtil().criarConexao(); String sql = "insert into Prest_Servico values (?, ?, ?, ?);"; try { PreparedStatement stmt = con.prepareStatement(sql); Endereco endereco = new Endereco(); stmt.setInt(1, 0); stmt.setInt(2, endereco.getCodEndereco()); stmt.setString(3, CadFornecedor.nomeForn); stmt.setString(4, CadFornecedor.cnpj); System.out.println("CADASTROU FORNECEDOR!"); stmt.executeUpdate(); } catch (SQLException ex) { ex.printStackTrace(); ex.getMessage(); } }[/code] O codEndereco esta como AutoImplement. Espero ter conseguido me expressar. Obs: Usando a seguinte linha de código, esta dando NullPointer. [code]stmt.setInt(2, endereco.getCodEndereco());[/code] Obrigado.
Banco de Dados - JDBC / SQL Inserir Date corretamente no MySQL xrafs Muito obrigado, funcionou. Vou postar o código pra caso alguém mais venha a ter a mesma duvida: [b]Tela de cadastro:[/b] [code] SimpleDateFormat data = new SimpleDateFormat("dd/MM/yyyy"); public DespMultas multas; private DespMultasDAO multasDAO; String sdatamulta; String svencimento; public static Integer codMultas; public static Date dataMulta; public static Date vencimento; public static Float valor; public static Boolean condpag; public static String Motivo; public static String Observacao; private void jbtCadastrarMultasActionPerformed(java.awt.event.ActionEvent evt) { codMultas = 15; sdatamulta = jtfDataMultas.getText(); try { dataMulta = data.parse(sdatamulta); } catch (ParseException ex) { Logger.getLogger(CadDespMultas.class.getName()).log(Level.SEVERE, null, ex); } dataMulta = new java.sql.Date(dataMulta.getTime()); svencimento = jtfVencimento.getText(); try { vencimento = data.parse(svencimento); } catch (ParseException ex) { Logger.getLogger(CadDespMultas.class.getName()).log(Level.SEVERE, null, ex); } vencimento = new java.sql.Date(vencimento.getTime()); valor = Float.parseFloat(jtfValorMulta.getText()); if(jcbPago.getSelectedItem() == "Sim"){ condpag = true; } if(jcbPago.getSelectedItem() == "Não"){ condpag = false; } Motivo = jtfMotivo.getText(); DespMultasDAO multasDao = new DespMultasImpl(); multasDao.Cadastrar(multas); }[/code] [b]Codigo do implements:[/b] [code]public class DespMultasImpl implements DespMultasDAO { @Override public void Cadastrar(DespMultas despMultas) { Connection con = new ConexaoUtil().criarConexao(); String sql = "insert into Desp_Multas (codDesp_Multas, Data, Vencimento, Valor, Cond_pag, Motivo, codVeiculo)" + "values (?, ?, ?, ?, ?, ?, 5)"; try { PreparedStatement stmt = con.prepareStatement(sql); stmt.setInt(1, CadDespMultas.codMultas); stmt.setDate(2, new java.sql.Date(CadDespMultas.dataMulta.getTime())); stmt.setDate(3, new java.sql.Date(CadDespMultas.vencimento.getTime())); stmt.setFloat(4, CadDespMultas.valor); stmt.setBoolean(5, CadDespMultas.condpag); stmt.setString(6, CadDespMultas.Motivo); System.out.println("CADASTROU!"); stmt.executeUpdate(); } catch (SQLException ex) { ex.printStackTrace(); ex.getMessage(); } } }[/code]
Banco de Dados - JDBC / SQL Inserir Date corretamente no MySQL xrafs Ele esta informando o seguinte erro ao tentar cadastrar: [i] Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: java.sql.PreparedStatement.setDate at Condev.dao.impl.DespMultasImpl.Cadastrar(DespMultasImpl.java:25) at Condev.CadDespMultas.jbtCadastrarMultasActionPerformed(CadDespMultas.java:212) at Condev.CadDespMultas.access$000(CadDespMultas.java:13) at Condev.CadDespMultas$1.actionPerformed(CadDespMultas.java:82) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:308) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6505) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:682) at java.awt.EventQueue$3.run(EventQueue.java:680) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:696) at java.awt.EventQueue$4.run(EventQueue.java:694) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:693) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139) at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)[/i] Já na dica de erro do implements dos códigos que informei acima aparece: [i]no suitable method found for setDate(int,java.util.Date) method PreparedStatement.setDate(int,java.sql.Date,Calendar) is not applicable (actual and formal argument lists differ in length) method PreparedStatement.setDate(int,java.sql.Date) is not applicable (actual argument java.util.Date cannot be converted to java.sql.Date by method invocation conversion)[/i]
Banco de Dados - JDBC / SQL Inserir Date corretamente no MySQL xrafs Obrigado Simu, com suas dicas deu pra dar uma boa avançada, já não da erro com o tratamento das datas, fiz da seguinte maneira: [code] private void jbtCadastrarMultasActionPerformed(java.awt.event.ActionEvent evt) { codMultas = 15; sdatamulta = jtfDataMultas.getText(); try { dataMulta = data.parse(sdatamulta); } catch (ParseException ex) { Logger.getLogger(CadDespMultas.class.getName()).log(Level.SEVERE, null, ex); } dataMulta = new java.sql.Date(dataMulta.getTime()); svencimento = jtfVencimento.getText(); try { vencimento = data.parse(svencimento); } catch (ParseException ex) { Logger.getLogger(CadDespMultas.class.getName()).log(Level.SEVERE, null, ex); } vencimento = new java.sql.Date(vencimento.getTime()); valor = Float.parseFloat(jtfValorMulta.getText()); if(jcbPago.getSelectedItem() == "Sim"){ condpag = true; } if(jcbPago.getSelectedItem() == "Não"){ condpag = false; } Motivo = jtfMotivo.getText(); DespMultasDAO multasDao = new DespMultasImpl(); multasDao.Cadastrar(multas); } [/code] Porém no implements usando os seguintes códigos ele não insere: [code] stmt.setDate(2, CadDespMultas.dataMulta); stmt.setDate(3, CadDespMultas.vencimento);[/code] Tem que ser outro formato que não Date? Qual?
Banco de Dados - JDBC / SQL Inserir Date corretamente no MySQL xrafs [quote="davi.costa"]Posta o erro completo e tenta visualizar no erro a linha que quebrou. Pois vai ficar mais fácil de resolver seu problema. abcs [/quote] Segue então o erro completo: Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Cannot format given Object as a Date at java.text.DateFormat.format(DateFormat.java:301) at java.text.Format.format(Format.java:157) at Condev.CadDespMultas.jbtCadastrarMultasActionPerformed(CadDespMultas.java:172) at Condev.CadDespMultas.access$000(CadDespMultas.java:10) at Condev.CadDespMultas$1.actionPerformed(CadDespMultas.java:72) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:308) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6505) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:682) at java.awt.EventQueue$3.run(EventQueue.java:680) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:696) at java.awt.EventQueue$4.run(EventQueue.java:694) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:693) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139) at java.awt.EventDispatchThread.run(EventDispatchThread.java:97) A linha de código referente a esse erro: at Condev.CadDespMultas.jbtCadastrarMultasActionPerformed(CadDespMultas.java:172) é essa aqui: [code]data.format(dataMulta);[/code] E referente a esse erro: at Condev.CadDespMultas.access$000(CadDespMultas.java:10) essa aqui: [code]public class CadDespMultas extends javax.swing.JFrame {[/code] E esse erro: at Condev.CadDespMultas$1.actionPerformed(CadDespMultas.java:72) essa linha: [code]jbtCadastrarMultasActionPerformed(evt);[/code]
Banco de Dados - JDBC / SQL Inserir Date corretamente no MySQL xrafs Olá povo. Procurei muito a respeito mas nenhuma das 'soluções' encontradas se encaixam na minha situação. Então como não tenho muito mais tempo pra finalizar meu projeto vim pedir ajuda. O caso é: numa das minhas telas tenho um JFormattedTextField que receberá uma data que deve ser inserida no MySQL. Porém não encontro forma de fazer isso corretamente, os outros campos vão sem problemas mas a data vem me incomodando. Quero saber como fazer uma conversão do valor inserido no campo quando o Action Performed do botão "Cadastrar" for acionado. Segue um pouco do código que tentei arriscar depois de algumas pesquisas: [b]Tela de cadastro:[/b] [code] SimpleDateFormat data = new SimpleDateFormat("dd/MM/yyyy"); public DespMultas multas; private DespMultasDAO multasDAO; public static Integer codMultas; public static String dataMulta; public static String vencimento; public static Float valor; public static Boolean motorista; public static String Motivo; private void jbtCadastrarMultasActionPerformed(java.awt.event.ActionEvent evt) { codMultas = 15; dataMulta = jtfDataMultas.getText(); data.format(dataMulta); dataMulta = new SimpleDateFormat("yyyy-MM-dd").format(dataMulta); vencimento = jtfVencimento.getText(); data.format(vencimento); vencimento = new SimpleDateFormat("yyyy-MM-dd").format(vencimento); valor = Float.parseFloat(jtfValorMulta.getText()); motorista =(Boolean) jcbMotorista.getSelectedItem(); Motivo = jtfPlaca.getText(); DespMultasDAO multasDao = new DespMultasImpl(); multasDao.Cadastrar(multas); } [/code] [b]DAO:[/b] [code]public interface DespMultasDAO { void Cadastrar(DespMultas despMultas); }[/code] [b]Implements:[/b] [code]public class DespMultasImpl implements DespMultasDAO { @Override public void Cadastrar(DespMultas despMultas) { Connection con = new ConexaoUtil().criarConexao(); String sql = "insert into veiculo values (?, ?, ?, ?, ?, ?)"; try { PreparedStatement stmt = con.prepareStatement(sql); stmt.setInt(1, CadDespMultas.codMultas); stmt.setString(2, CadDespMultas.dataMulta); stmt.setString(3, CadDespMultas.vencimento); stmt.setFloat(4, CadDespMultas.valor); stmt.setBoolean(5, CadDespMultas.motorista); stmt.setString(6, CadDespMultas.Motivo); System.out.println("CADASTROU!"); stmt.executeUpdate(); } catch (SQLException ex) { ex.printStackTrace(); ex.getMessage(); } }[/code] Executando o código dessa maneira ele retornou o seguinte erro: Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Cannot format given Object as a Date Espero que alguém possa me ajudar. Obrigado :D[/b][/code]
Goto page 1