Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/08/2010, 17:43
marioaguirre
 
Fecha de Ingreso: febrero-2009
Mensajes: 16
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ayuda Procedimiento Almacenado MySQL-Java

Pues sigue estando raro esto...

Lo probe como mencionaste y aparecia un null
Depués lo que hice fue poner el procedimiento almacenado de esta forma:
Código:
CREATE PROCEDURE ValidarPrgramas_IN2(     
           OUT textoValidacion   varchar(20)
     )
BEGIN
       SELECT 'HOLA MUNDO' INTO textoValidacion;
END;
Simpleee sin nada más.

Depués en Java:
Código:
private void insertandoDatos() {
            String $sql= "{call ValidarPrgramas_IN2 (?)}";
            Connection con = null;
            CallableStatement cs = null;
            String datoRecibido = "";
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/OrganizandoProgramas","monty","Abc321");
                cs = (CallableStatement) con.prepareCall($sql);
//                cs.setString(1,txt_ArchivoPrograma.getText());
//                cs.setString(2,txt_NombrePrograma.getText());
//                cs.setString(3,cmb_CategoriaPrograma.getSelectedItem().toString());
//                cs.setDouble(4,Double.parseDouble(txt_VersionPrograma.getText()));
//                cs.setString(5,txa_DescripcionPrograma.getText());
                System.out.println("uno");
                try {
                    cs.registerOutParameter("textoValidacion",Types.VARCHAR);
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                }
                System.out.println("dos");
                cs.execute();
                System.out.println("tres");
                datoRecibido = cs.getString("textoValidacion");
                System.out.println(datoRecibido);
                //Si el datoRecibido es null
                if(cs.wasNull()){
                    JOptionPane.showMessageDialog(null,"Respusta Nula");
                }
                else{
                    JOptionPane.showMessageDialog(null,datoRecibido);
                }
                cs.close();
                con.close();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null,"Error en Procedimiento Almacenado.\n"+
                        e.getMessage()+"\n");
            }
        }
En este catch me arrojaba un null
Código:
try {
                    cs.registerOutParameter("textoValidacion",Types.VARCHAR);
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                }
Y si lo ponia normal, así: me arroja No value specified for parameter 1
Código:
try {
                    cs.registerOutParameter(1,Types.VARCHAR);
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                }
En los 2 casos y en el último catch me arroja: Parameter index of 1 is out of range (1, 0)

Código:
catch (Exception e) {
                JOptionPane.showMessageDialog(null,"Error en Procedimiento Almacenado.\n"+
                        e.getMessage()+"\n");
            }
Cualquier otra sugerencia esta bien, lo probaré Gracias