java程序调用存储过程得到新增加记录的id号的方法

本文介绍如何通过Java程序调用MSSQL Server 2000的存储过程,并获取新增记录的ID。首先修改存储过程以使用输出参数返回新ID,接着展示了具体的Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值