Ir al contenido


Foto

Llama procedimiento almacenado desde Java


  • Por favor identifícate para responder
14 respuestas en este tema

#1 dant

dant

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 03 agosto 2010 - 11:58

Hola a todos; espero estar en el foro adecuado y puedan ayudarme con este problema que tiene mucho que ver con el tema anterior:

Pasa que tengo el siguiente procedimiento almacenado hecho en firebird v. 2.1.3:



sql
  1. SET TERM ^ ;
  2. CREATE PROCEDURE INGRESARPER (
  3.     CODPER CHAR(5),
  4.     APEPER VARCHAR(25),
  5.     NOMPER VARCHAR(25),
  6.     DNIPER CHAR(8),
  7.     FNACPER DATE,
  8.     DIRPER VARCHAR(30),
  9.     PROVPER VARCHAR(25),
  10.     TELFPER VARCHAR(12),
  11.     CELPER VARCHAR(16),
  12.     EMAILPER VARCHAR(30),
  13.     CARGPER VARCHAR(25),
  14.     FINGPER DATE,
  15.     FCESPER DATE,
  16.     PLAPER CHAR(1),
  17.     FONDPENSPER VARCHAR(25),
  18.     CODESSPER VARCHAR(15) )
  19. AS
  20. DECLARE variable existe SMALLINT;
  21. BEGIN
  22.     SELECT COUNT(*) FROM REGISTROSPER WHERE REGISTROSPER.COD_PER = :codper INTO :existe;
  23.     IF (:existe = 0) THEN BEGIN
  24.         INSERT INTO REGISTROSPER VALUES (:codper, :apeper, :nomper, :dniper, :fnacper, :dirper, :provper, :telfper,
  25. :celper, :emailper, :cargper, :fingper, :fcesper, :plaper, :fondpensper, :codessper);
  26.     END
  27. END^
  28. SET TERM ; ^



El procedimiento funciona muy bien; El problema ahora es que estoy intentando llamar a este procedimiento almacenado desde java ( utilizo el IDE de Netbeans 6.8 ) aqui está el código fuente ( ya tengo la libreria de Jaybird ) :



java
  1. //Esta es la clase que me permite realizar la conexión
  2.  
  3. package proyecto;
  4.  
  5. import java.sql.Connection;
  6.  
  7. public class Conexion {
  8.  
  9.     public static Connection confirebird;
  10.  
  11.     public static Connection Conectar(String url, String user, String pass) throws Exception{
  12.         try{
  13.             String databaseURL = "jdbc:firebirdsql:" + url;
  14.             Class.forName("org.firebirdsql.jdbc.FBDriver");
  15.             confirebird = java.sql.DriverManager.getConnection(databaseURL, user, pass);
  16.         } catch(Exception e){
  17.             e.printStackTrace();
  18.             throw new Exception(e);
  19.         } return confirebird;
  20.     }
  21. }
  22.  
  23.  
  24. //Y este es el código con el que intento llamar al procedimiento almacenado ( solo estoy colocando
  25. //el método del botón y los paquetes que son necesarios ):
  26.  
  27.  
  28.  
  29. package proyecto;
  30.  
  31. import java.sql.CallableStatement;
  32. import java.sql.Connection;
  33. import java.sql.SQLException;
  34. import java.text.ParseException;
  35. import java.text.SimpleDateFormat;
  36. import java.util.Date;
  37. import javax.swing.JOptionPane;
  38.  
  39. private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGrabarActionPerformed
  40.         txtCodigo.setText(getCodigo());
  41.         Connection connFir = null;
  42.         try{
  43.             connFir = Conexion.Conectar("localhost/3050:D:/DANIEL/Carpeta nueva/PROYECTO.fdb", "SYSDBA", "masterkey");
  44.             connFir.setAutoCommit(false);
  45.             CallableStatement sp = connFir.prepareCall("{ call INGRESARPER(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }");
  46.             sp.setString("CODPER", txtCodigo.getText().trim());
  47.             sp.setString("APEPER", txtApellidos.getText().trim());
  48.             sp.setString("NOMPER", txtNombres.getText().trim());
  49.             sp.setString("DNIPER", txtDni.getText().trim());
  50.             sp.setDate("FNACPER", (java.sql.Date)ConvertirAFecha(txtFn.getText().trim()));
  51.             sp.setString("DIRPER", txtDireccion.getText().trim());
  52.             sp.setString("PROVPER", txtProvincia.getText().trim());
  53.             sp.setString("TELFPER", txtFono.getText().trim());
  54.             sp.setString("CELPER", txtCelular.getText().trim());
  55.             sp.setString("EMAILPER", txtFono.getText().trim());
  56.             sp.setString("CARGPER", String.valueOf(cboCargo.getSelectedItem()));
  57.             sp.setDate("FINGPER", (java.sql.Date)ConvertirAFecha(txtFi.getText().trim()));
  58.             sp.setDate("FCESPER", (java.sql.Date)ConvertirAFecha(txtFc.getText().trim()));
  59.             sp.setString("PLAPER", getPlanilla());
  60.             sp.setString("FONDPENSPER", getFondPens());
  61.             sp.setString("CODESSPER", txtCodEss.getText().trim());
  62.             sp.executeUpdate();
  63.             connFir.commit();
  64.         } catch(Exception e){
  65.             try { connFir.rollback(); }
  66.             catch (SQLException ex) { ex.printStackTrace(); }
  67.         } finally{
  68.             try { connFir.close(); }
  69.             catch (SQLException ex) { ex.printStackTrace(); }
  70.         }
  71.     }



Al ejecutar el programa no me detecta ningun error ni exception ni asserts luego abro la base de datos para verificar si se agregó el registro : SELECT * FROM NOMBREDEMITABLA y no hay ningún registro actualizo mi BD y nada no logro identificar el problema.

Espero puedan ayudarme.

Agradesco su apoyo amigos.

Edito: Te recomiendo que uses las etiquetas de código para que sea más fácil entenderlo.
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 03 agosto 2010 - 12:12

Hola

No se el manejo de java, pero, no entiendo porque haces esto:



java
  1.       sp.executeUpdate();
  2.       connFir.commit();



El procedimiento no es un UPDATE es un SELECT y un INSERT, por lo que imagino que debería utilizarse así



java
  1.       sp.execute();
  2.       connFir.commit();



Salud OS
  • 0

#3 dant

dant

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 03 agosto 2010 - 12:29

Hola egostar si tenias razon en esa parte me equivoque este es el código modificado:



delphi
  1. private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) {                                         
  2.         txtCodigo.setText(getCodigo());
  3.         Connection connFir = null;
  4.         try{
  5.             connFir = Conexion.Conectar("localhost/3050:D:/DANIEL/Carpeta nueva/PROYECTO.fdb", "ADMINISTRADOR", "1c73304f60");
  6.             connFir.setAutoCommit(false);
  7.             CallableStatement sp = connFir.prepareCall("{ call INGRESARPER(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }");
  8.             sp.setString("CODPER", txtCodigo.getText().trim());
  9.             sp.setString("APEPER", txtApellidos.getText().trim());
  10.             sp.setString("NOMPER", txtNombres.getText().trim());
  11.             sp.setString("DNIPER", txtDni.getText().trim());
  12.             sp.setDate("FNACPER", (java.sql.Date)ConvertirAFecha(txtFn.getText().trim()));
  13.             sp.setString("DIRPER", txtDireccion.getText().trim());
  14.             sp.setString("PROVPER", txtProvincia.getText().trim());
  15.             sp.setString("TELFPER", txtFono.getText().trim());
  16.             sp.setString("CELPER", txtCelular.getText().trim());
  17.             sp.setString("EMAILPER", txtEmail.getText().trim());
  18.             sp.setString("CARGPER", String.valueOf(cboCargo.getSelectedItem()));
  19.             sp.setDate("FINGPER", (java.sql.Date)ConvertirAFecha(txtFi.getText().trim()));
  20.             sp.setDate("FCESPER", (java.sql.Date)ConvertirAFecha(txtFc.getText().trim()));
  21.             sp.setString("PLAPER", getPlanilla());
  22.             sp.setString("FONDPENSPER", getFondPens());
  23.             sp.setString("CODESSPER", txtCodEss.getText().trim());
  24.             sp.execute();
  25.             connFir.commit();
  26.         } catch(Exception e){
  27.             try { connFir.rollback(); }
  28.             catch (SQLException ex) { ex.printStackTrace(); }
  29.         } finally{
  30.             try { connFir.close(); }
  31.             catch (SQLException ex) { ex.printStackTrace(); }
  32.         }
  33.     }



El código lo ejecute y nada el problema persiste.
  • 0

#4 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 03 agosto 2010 - 01:25

Lo importante es que tienes la conexión con firebird. Podrías revisar alguno de estos enlaces, quizá encuentres información útil.

Enlace 1

Enlace 2


Saludos!
  • 0

#5 dant

dant

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 03 agosto 2010 - 02:06

Gracias amigo por responder ( informacion revisada anteriormente ) pero es en base a esa informacion que hice el código fuente.
  • 0

#6 tmsanchez

tmsanchez

    Advanced Member

  • Miembros
  • PipPipPip
  • 85 mensajes

Escrito 04 agosto 2010 - 09:29

Que tal.

No se si tenga que ver con esto:

The call syntax is not (yet) fully supported by Jaybird, and selectable procedures will not work correctly if the call syntax is used. Use the native SELECT * FROM selectable_procedure(?, ?) statement instead for selectable procedures and EXECUTE PROCEDURE for executable / non-selectable procedures.

See the FAQ entry at http://firebirdsql.o...=jdbc&id=faq#39


Espero te sea de utilidad.

  • 0

#7 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 06 agosto 2010 - 05:22

Buenas,

Como te comenta tmsanchez, un SP que no devuelve datos debe ejecutarse con EXECUTE PROCEDURE

Nos leemos

  • 0

#8 dant

dant

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 10 agosto 2010 - 05:15

Gracias por responder; revise el enlace es interesante lo que no entiendo es en donde debo realizar ese cambio EXECUTE_PROCEDURE lo hice dentro de:



sql
  1. CallableStatement sp = connFir.prepareCall("{ EXECUTE PROCEDURE  INGRESARPER(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }");



y nada el problema aún persiste es raro porqué al ejecutarlo directamente desde el SGBD firebird ( EXECUTE PROCEDURE NOMSP ( PARAM1, PARAM2, ..., PARAM "N" ) ) si funciona.
  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 11 agosto 2010 - 09:07

No amigo, lo que se quiere decir es que debes usar la sentencia directa, para ello es mejor usar java.sql.Statement en vez de java.sql.CallableStatement



java
  1. Statement Procedimiento = conn.createStatement();
  2. try {
  3. Procedimiento.execute("EXECUTE PROCEDURE  INGRESARPER(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
  4. } catch (Exception e) { //capturas errores
  5. }



Saludos.
  • 0

#10 dant

dant

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 12 agosto 2010 - 12:31

Gracias man; modifiqué el código pero ahora me sale error:

Código JAVA:



sql
  1. private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) {                                         
  2.         txtCodigo.setText(getCodigo());
  3.         try{
  4.             Connection connFir = Conexion.Conectar("localhost/3050:D:/DANIEL/Carpeta nueva/PROYECTO.fdb", "SYSDBA", "masterkey");
  5.             Statement sp = connFir.createStatement();
  6.             sp.executeUpdate("EXECUTE PROCEDURE INGRESARPER(txtCodigo.getText().trim(),txtApellidos.getText().trim(),txtNombres.getText().trim(),txtDni.getText().trim(),(java.sql.Date)ConvertirAFecha(txtFn.getText().trim()),txtDireccion.getText().trim(),txtProvincia.getText().trim(),txtFono.getText().trim(),txtCelular.getText().trim(),txtEmail.getText().trim(),String.valueOf(cboCargo.getSelectedItem()),(java.sql.Date)ConvertirAFecha(txtFi.getText().trim()),(java.sql.Date)ConvertirAFecha(txtFc.getText().trim()),getPlanilla(),getFondPens(),txtCodEss.getText().trim())");
  7.             sp.close();
  8.             connFir.close();
  9.         } catch(Exception e) {
  10.             e.printStackTrace();
  11.         }
  12.     }




Mensaje Error:

run:
org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544569. Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 48
(
        at org.firebirdsql.jdbc.AbstractStatement.executeUpdate(AbstractStatement.java:273)
        at proyecto.RegistrosPer.btnGrabarActionPerformed(RegistrosPer.java:540)
        at proyecto.RegistrosPer.access$400(RegistrosPer.java:14)
        at proyecto.RegistrosPer$5.actionPerformed(RegistrosPer.java:449)
        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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
        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.pumpEventsForFilter(EventDispatchThread.java:178)
        at java.awt.Dialog$1.run(Dialog.java:1045)
        at java.awt.Dialog$3.run(Dialog.java:1097)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Dialog.show(Dialog.java:1095)
        at java.awt.Component.show(Component.java:1563)
        at java.awt.Component.setVisible(Component.java:1515)
        at java.awt.Window.setVisible(Window.java:841)
        at java.awt.Dialog.setVisible(Dialog.java:985)
        at proyecto.ProyectoView.mnuRegPerActionPerformed(ProyectoView.java:224)
        at proyecto.ProyectoView.access$800(ProyectoView.java:22)
        at proyecto.ProyectoView$4.actionPerformed(ProyectoView.java:143)
        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.AbstractButton.doClick(AbstractButton.java:357)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
        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)
at org.firebirdsql.gds.GDSException: Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 48
(
        at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.readStatusVector(AbstractJavaGDSImpl.java:2169)
        at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.receiveResponse(AbstractJavaGDSImpl.java:2119)
        at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscDsqlPrepare(AbstractJavaGDSImpl.java:1529)
        at org.firebirdsql.gds.impl.GDSHelper.prepareStatement(GDSHelper.java:189)
        at org.firebirdsql.jdbc.AbstractStatement.prepareFixedStatement(AbstractStatement.java:1119)
        at org.firebirdsql.jdbc.AbstractStatement.internalExecute(AbstractStatement.java:1101)
        at org.firebirdsql.jdbc.AbstractStatement.executeUpdate(AbstractStatement.java:269)
        at proyecto.RegistrosPer.btnGrabarActionPerformed(RegistrosPer.java:540)
        at proyecto.RegistrosPer.access$400(RegistrosPer.java:14)
        at proyecto.RegistrosPer$5.actionPerformed(RegistrosPer.java:449)
        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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
        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.pumpEventsForFilter(EventDispatchThread.java:178)
        at java.awt.Dialog$1.run(Dialog.java:1045)
        at java.awt.Dialog$3.run(Dialog.java:1097)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Dialog.show(Dialog.java:1095)
        at java.awt.Component.show(Component.java:1563)
        at java.awt.Component.setVisible(Component.java:1515)
        at java.awt.Window.setVisible(Window.java:841)
        at java.awt.Dialog.setVisible(Dialog.java:985)
        at proyecto.ProyectoView.mnuRegPerActionPerformed(ProyectoView.java:224)
        at proyecto.ProyectoView.access$800(ProyectoView.java:22)
        at proyecto.ProyectoView$4.actionPerformed(ProyectoView.java:143)
        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.AbstractButton.doClick(AbstractButton.java:357)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
        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)
GENERACIÓN CORRECTA (total time: 1 minute 15 seconds)

Seguiré tratando de resolver este problema; una vez más gracias amigos.
  • 0

#11 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 12 agosto 2010 - 12:36

No se mucho de Java, pero no se supone que los parámetros deben ser pasados delimitados como comillas???
  • 0

#12 tmsanchez

tmsanchez

    Advanced Member

  • Miembros
  • PipPipPip
  • 85 mensajes

Escrito 12 agosto 2010 - 01:57

Que tal.

Intenta utilizar el numero de posición que ocupa el parómetro (inician en uno) en la llamada, algo asi:


csharp
  1. private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) {                                         
  2.         txtCodigo.setText(getCodigo());
  3.         try{
  4. CallableStatement sp = connFir.prepareCall("{ EXECUTE PROCEDURE  INGRESARPER(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }");
  5. sp.setString(1, txtCodigo.getText().trim());
  6.             sp.setString(2, txtApellidos.getText().trim());
  7.             sp.setString(3, txtNombres.getText().trim());
  8.             sp.setString(4, txtDni.getText().trim());
  9.             sp.setDate(5, (java.sql.Date)ConvertirAFecha(txtFn.getText().trim()));
  10.             sp.setString(6, txtDireccion.getText().trim());
  11.             sp.setString(7, txtProvincia.getText().trim());
  12.             sp.setString(8, txtFono.getText().trim());
  13.             sp.setString(9, txtCelular.getText().trim());
  14.             sp.setString(10, txtEmail.getText().trim());
  15.             sp.setString(11, String.valueOf(cboCargo.getSelectedItem()));
  16.             sp.setDate(12, (java.sql.Date)ConvertirAFecha(txtFi.getText().trim()));
  17.             sp.setDate(13, (java.sql.Date)ConvertirAFecha(txtFc.getText().trim()));
  18.             sp.setString(14, getPlanilla());
  19.             sp.setString(15, getFondPens());
  20.             sp.setString(16, txtCodEss.getText().trim());
  21. sp.executeUpdate();
  22. } catch(Exception e) {
  23.             e.printStackTrace();
  24.         }
  25.     }


  • 0

#13 tmsanchez

tmsanchez

    Advanced Member

  • Miembros
  • PipPipPip
  • 85 mensajes

Escrito 12 agosto 2010 - 02:02

No se mucho de Java, pero no se supone que los parámetros deben ser pasados delimitados como comillas???



csharp
  1. Tambien esta es otra opcion
  2.  
  3. Statement Procedimiento = conn.createStatement();
  4. try {
  5. String parametros =  txtCodigo.getText().trim() + "," ;
  6. parametros += txtApellidos.getText().trim();
  7. // y asi con todos los parametros
  8. Procedimiento.execute("EXECUTE PROCEDURE  INGRESARPER(" + parametros + ")" );
  9. } catch (Exception e) { //capturas errores
  10. }


  • 0

#14 dant

dant

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 12 agosto 2010 - 06:01

Gracias por responder; he modificado el código:



sql
  1. private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) {                                         
  2.         txtCodigo.setText(getCodigo());
  3.         try{
  4.             Connection connFir = Conexion.Conectar("localhost/3050:D:/DANIEL/Carpeta nueva/PROYECTO.fdb", "ADMINISTRADOR", "1c73304f60");
  5.             Statement sp = connFir.createStatement();
  6.             String parametros = txtCodigo.getText().TRIM() + ",";
  7.             parametros += txtApellidos.getText().TRIM() + ",";
  8.             parametros += txtNombres.getText().TRIM() + ",";
  9.             parametros += txtDni.getText().TRIM() + ",";
  10.             parametros += (java.SQL.DATE)ConvertirAFecha(txtFn.getText().TRIM()) + ",";
  11.             parametros += txtDireccion.getText().TRIM() + ",";
  12.             parametros += txtProvincia.getText().TRIM() + ",";
  13.             parametros += txtFono.getText().TRIM() + ",";
  14.             parametros += txtCelular.getText().TRIM() + ",";
  15.             parametros += txtEmail.getText().TRIM() + ",";
  16.             parametros += String.valueOf(cboCargo.getSelectedItem()) + ",";
  17.             parametros += (java.SQL.DATE)ConvertirAFecha(txtFi.getText().TRIM()) + ",";
  18.             parametros += (java.SQL.DATE)ConvertirAFecha(txtFc.getText().TRIM()) + ",";
  19.             parametros += getPlanilla() + ",";
  20.             parametros += getFondPens() + ",";
  21.             parametros += txtCodEss.getText().TRIM();
  22.             sp.EXECUTE("EXECUTE PROCEDURE INGRESARPER(" + parametros + ")");
  23.             sp.close();
  24.             connFir.close();
  25.         } catch(Exception e) {
  26.             e.printStackTrace();
  27.         }
  28.     }




Pero ahora el error es el siguiente:

java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
:
  • 0

#15 tmsanchez

tmsanchez

    Advanced Member

  • Miembros
  • PipPipPip
  • 85 mensajes

Escrito 13 agosto 2010 - 09:58

Hola.

Para hacer el cast correcto puedes hacer lo siguiente:


csharp
  1. java.sql.Date miFecha = new java.sql.Date(ConvertirAFecha(txtFi.getText().trim())) + ",";



aunque lo mejor sería utilizar sp.setDate() porque el driver de la base es el que hace el formato de la fecha, de lo contrario si se concatena tendrías que hacer una cadena con el formato requerido por la base (si es ddmmaa o mmddaa) :



csharp
  1. private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) {                                         
  2.         txtCodigo.setText(getCodigo());
  3.         try{
  4. CallableStatement sp = connFir.prepareCall("{ EXECUTE PROCEDURE  INGRESARPER(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }");
  5. sp.setString(1, txtCodigo.getText().trim());
  6.             sp.setString(2, txtApellidos.getText().trim());
  7.             sp.setString(3, txtNombres.getText().trim());
  8.             sp.setString(4, txtDni.getText().trim());
  9.             sp.setDate(5, (java.sql.Date)ConvertirAFecha(txtFn.getText().trim()));
  10.             sp.setString(6, txtDireccion.getText().trim());
  11.             sp.setString(7, txtProvincia.getText().trim());
  12.             sp.setString(8, txtFono.getText().trim());
  13.             sp.setString(9, txtCelular.getText().trim());
  14.             sp.setString(10, txtEmail.getText().trim());
  15.             sp.setString(11, String.valueOf(cboCargo.getSelectedItem()));
  16.             sp.setDate(12, ConvertirAFecha(txtFi.getText().trim()));
  17.             sp.setDate(13, ConvertirAFecha(txtFc.getText().trim()));
  18.             sp.setString(14, getPlanilla());
  19.             sp.setString(15, getFondPens());
  20.             sp.setString(16, txtCodEss.getText().trim());
  21. sp.executeUpdate();
  22. } catch(Exception e) {
  23.             e.printStackTrace();
  24.         }
  25.     }


  • 0




IP.Board spam blocked by CleanTalk.