java编程调用存储过程中得到新增记录id号的实现方法
本文实例讲述了java编程调用存储过程中得到新增记录id号的实现方法。分享给大家供大家参考,具体如下:
关于mssqlserver2000的存储过程,主要作用是在表test中插入一条记录,然后得到新增加记录的id号。
test表三个字段:
ID:自动增长
yhm:用户名字符串类型
kl:密码 字符串类型
那么在java程序中如何调用这个存储过程才能实现,得到新增加记录的id号
存储过程如下:
CREATEPROCEDUREyh_insert @yhmvarchar(50),@klvarchar(50) AS begin setnocounton insertintotest(yhm,kl)values(@yhm,@kl) setnocountoff selectnewid=@@identity end GO
解决办法:
在查询分析器中执行sp的方法
declare@idint execsp_yh_insert'tetstst','111111',@idoutput select@id
修改sp如下:使用输出参数来存储得到的新的Id
CREATEPROCEDUREsp_yh_insert @yhmvarchar(50),@klvarchar(50),@idintoutput AS begin setnocounton insertintotest(yhm,kl)values(@yhm,@kl) setnocountoff --selectnewid=@@identity select@id=@@identity--关键 end GO
java程序如下:
publicStringcall_sp_insert_jh(Stringyhm,Stringkl)throwsException { StringstrFlag=""; StringstrString=""; Connectionconn=null; try { conn=db.getConnection(); //CallableStatementproc=conn.prepareCall(strSql); CallableStatementproc=conn.prepareCall("{callsp_yh_insert(?,?,?)}"); proc.setString(1,"往往外饿饿饿额");//给第一个输入参数赋值 proc.setString(2,"1111111");//给第2个输入参数赋值 proc.registerOutParameter(3,Types.INTEGER);//处理输出参数 proc.execute();//执行sp intid=proc.getInt(3);//得到返回值的值 strString=Integer.toString(id); strFlag=strString; } catch(SQLExceptione) { System.out.println("procexecuteerror"+strString); } finally { //关闭数据库联接 try { conn.close(); } catch(Exceptionsqle) { //产生新异常,则抛出新程序异常 //thrownewException("[DBBean.executeQuery(sql,tname)]","10"); System.out.println("出错了"); } } returnstrFlag; }
希望本文所述对大家Java程序设计有所帮助。