这篇文章主要介绍了java编程调用存储过程中得到新增记录id号的实现方法,涉及Java数据库操作中存储过程的相关使用技巧,需要的朋友可以参考下
本文实例讲述了java编程调用存储过程中得到新增记录id号的实现方法。分享给大家供大家参考,具体如下:
关于ms sql server2000的存储过程,主要作用是在表test中插入一条记录,然后得到新增加记录的id号。
test表三个字段:
ID:自动增长
yhm:用户名 字符串类型
kl: 密码 字符串类型
那么在java程序中如何调用这个存储过程才能实现,得到新增加记录的id号
存储过程如下:
- CREATE PROCEDURE yh_insert
- @yhm varchar(50),@kl varchar(50)
- AS
- begin
- set nocount on
- insert into test(yhm,kl) values(@yhm,@kl)
- set nocount off
- select newid=@@identity
- end
- GO
解决办法:
在查询分析器中执行sp的方法
- declare @id int
- exec sp_yh_insert 'tetstst','111111',@id output
- select @id
修改sp如下:使用输出参数来存储得到的新的Id
- CREATE PROCEDURE sp_yh_insert
- @yhm varchar(50),@kl varchar(50),@id int output
- AS
- begin
- set nocount on
- insert into test(yhm,kl) values(@yhm,@kl)
- set nocount off
- --select newid=@@identity
- select @id=@@identity --关键
- end
- GO
java程序如下:
- public String call_sp_insert_jh(String yhm,String kl)throws Exception
- {
- String strFlag = "";
- String strString = "";
- Connection conn = null;
- try
- {
- conn = db.getConnection();
- //CallableStatement proc = conn.prepareCall(strSql);
- CallableStatement proc=conn.prepareCall("{call sp_yh_insert(?,?,?)}");
- proc.setString(1, "往往外饿饿饿额"); //给第一个输入参数赋值
- proc.setString(2, "1111111"); //给第2个输入参数赋值
- proc.registerOutParameter(3,Types.INTEGER); //处理输出参数
- proc.execute(); //执行sp
- int id = proc.getInt(3);//得到返回值的值
- strString=Integer.toString(id);
- strFlag=strString ;
- }
- catch (SQLException e)
- {
- System.out.println("proc execute error"+strString);
- }
- finally
- {
- //关闭数据库联接
- try
- {
- conn.close();
- }
- catch(Exception sqle)
- {
- //产生新 异常,则抛出新 程序异常
- //throw new Exception("[DBBean.executeQuery(sql,tname)]","10");
- System.out.println("出错了");
- }
- }
- return strFlag;
- }
希望本文所述对大家Java程序设计有所帮助。
新闻热点
疑难解答
图片精选