Comando SQL

[code]public void cadastrarOrdemServico(OrdemServico os) throws SQLException {
String sql = "INSERT INTO SERVICO_ABERTO (servico, valor, valorTotal) " +
“VALUES (?, ?, ?)”;
PreparedStatement comandoSQL = (PreparedStatement) banco.getConexao().prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

    comandoSQL.setString(1, os.getServico());
    comandoSQL.setFloat(2, os.getValor());
    comandoSQL.setFloat(3, os.getValorTotal());
    
    comandoSQL.executeUpdate();

    ResultSet rs = comandoSQL.getGeneratedKeys();
    rs.next();
    int idServico = rs.getInt(1);
    ArrayList<OrdemServico> ordemS = os.getOrdemS();
    for (OrdemServico ordem : ordemS) {
        ordem.setCod_servicoAberto(idServico);
        cadastrarServico(ordem);
    }
}[/code]

tenho que pegar os valores(servico,valor,valorTotal) de um jtable e salvar no banco…
queria saber se ta certo esse método…

desde ja agradeço!!

A melhor pessoa para dizer se este método está ou não correto é você mesmo, basta rodar o seu código e analisar o resultado :slight_smile:

Se tem dúvidas quanto a JDBC, aqui tem um tutorial bem banaca.
http://www.guj.com.br/article.show.logic?id=7

Mas até o executeUpdate() não vi erro no seu programa.
Abraços.

Caraa…

até a linha 14 tah certo…

o restante parece estar também…

se der algum erro posta ai!!

xD~~

Por que está fazendo um cast para PreparedStatement na linha 4?

O método deve retornar um PreparedStatement, se não estiver retornando, tem algum problema.

Outra coisa, não podemos dizer se estão certas as linhas 6, 7 e 8, pois os métodos getServico(), getValor() e getValorTotal() do objeto os tem que retornar String, Float e Float respectivamente para funcionar.

Está dando algum erro ou tendo algum comportamento inesperado?

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'servico' cannot be null at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.Util.getInstance(Util.java:381) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3536) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3468) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1957) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2107) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2648) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2086) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2371) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2289) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2274) at acessoAoBanco.FachadaAcessoCadastro.cadastrarOrdemServico(FachadaAcessoCadastro.java:293) at gui.frameTelaPrincipal.jbFinalizarServicoActionPerformed(frameTelaPrincipal.java:725) at gui.frameTelaPrincipal.access$400(frameTelaPrincipal.java:35) at gui.frameTelaPrincipal$6.actionPerformed(frameTelaPrincipal.java:233) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

quando rodo aparece esse erro ai…

O método getServico() está retornando null.

Verifique se a OrdemServico que está sendo passada para o método cadastrarOrdemServico possui mesmo valor neste atributo.

ou então muda a tabela permitindo que o campo serviço seja null, o que não recomendo fazer rs.

continua dando o mesmo erro…