java 获取保存的id_java编程调用存储过程中得到新增记录id号的实现方法

本文实例讲述了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程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值