2011-12-21 12 views
-1

私は更新クエリのMySQLストアドプロシージャを作成しました。その後どのように私はMySqlにパラメータ値を渡すことができますストアドプロシージャ

delimiter // 
create procedure studentrcs(sname varchar(20),smark1 int(3),smark2 int(3),stotal int(10),inout Regno int(6)) 
begin 
UPDATE studentrecords set student_name=sname,mark1=smark1,mark2=smark2,total=stotal where Reg_no=Regno; 
end;// 

、コール可能文を通じて、私は(実行時)の値を渡すことができますどのようにパラメータ

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.setString(2, treg.getText()); 
        calstat.setString(3, tmark1.getText()); 
        calstat.setString(4, tmark2.getText()); 
        calstat.setString(5, ttotal.getText()); 

        calstat.executeUpdate(); 
+0

なぜあなたは正しい答えを与えていないのですか? – YumYumYum

答えて

0

としてあなたが必要となりますので、あなたのストアドプロシージャで指定INOUTパラメータ(Regno)を持っています入力値を指定してCallableStatement.registerOutParameterメソッドで登録します。また、int入力パラメータの値もintに設定してみてください。例えば

:私は、私が上げられますNumberFormatException取り扱い取り残されているように、このすべてがtry catch finallyブロックであることを仮定してい

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(); 

tmark1.getText()tname.getText()tmark2.getText()またはttotal.getText()復帰有効でない場合整数値。

あなただけのそれ自身のJavaメソッドにSQLのupdateメソッドをダンプし、むしろ保存を作成するよりも、それを呼び出さない理由はさておき、私は知らないようなJava here

からMySQLのルーチンを呼び出すについての詳細情報MySQLルーチン。しかし、私の考えでは!

関連する問題