В вашей хранимой процедуре указан параметр INOUT
(Regno
), поэтому вам нужно как указать значение для его ввода, так и зарегистрировать его методом CallableStatement.registerOutParameter
. Также попробуйте установить значения int
для ваших int
входных параметров.
Например:
CallableStatement calstat=null;
calstat=conn.prepareCall("{call studentrcs(?,?,?,?,?)}"); // **how i can pass the value here(at run time).**
//System.out.println("Update");
calstat.setString(1,tname.getText());
calstat.setInt(2, Integer.parseInt(treg.getText()));
calstat.setInt(3, Integer.parseInt(tmark1.getText()));
calstat.setInt(4, Integer.parseInt(tmark2.getText()));
calstat.setInt(5, Integer.parseInt(ttotal.getText()));
calstat.registerOutParameter(5, Types.NUMERIC);
calstat.executeUpdate();
Я предполагаю, что все это находится в блоке try catch finally
, поэтому я исключил обработку NumberFormatException
, которая будет повышена, если tmark1.getText()
, tname.getText()
, tmark2.getText()
или ttotal.getText()
не вернутся допустимые целочисленные значения.
Подробнее о вызове подпрограмм MySQL из Java здесь
Кроме того, я не знаю, почему вы просто не просто записываете метод обновления SQL в его собственный метод Java и вызываете его, а не создаете хранимую подпрограмму MySQL. Только мое мнение, хотя!