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