`
piperzero
  • 浏览: 3478367 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

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编程调用存储过程中得到新增记录id号的实现方法

    主要介绍了java编程调用存储过程中得到新增记录id号的实现方法,涉及Java数据库操作中存储过程的相关使用技巧,需要的朋友可以参考下

    最新Java面试宝典pdf版

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    Java面试宝典2012新版

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    Java面试宝典-经典

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    Java面试宝典2010版

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    java-servlet-api.doc

    通过使用这个对象,Servlet可以记录事件、得到资源并得到来自Servlet引擎的类(例如RequestDispatcher对象)。一个Servlet只能运行在一个Servlet环境中,但是不同的Servlet可以在Servlet引擎上有不同的视图。 如果...

    java面试题大全(2012版)

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    java发送短信之AT指令

    短信内容的存储类 /*** * CommonSms 短信用于全局变量 */ public class CommonSms{ /** id */ private int id; /**短信内容*/ private String smstext; /**短信发送方*/ private String sender;//短信...

    Java面试笔试资料大全

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    java面试宝典2012

    22、用JDBC如何调用存储过程 119 23、JDBC中的PreparedStatement相比Statement的好处 120 24. 写一个用jdbc连接并访问oracle数据的程序代码 121 25、Class.forName的作用?为什么要用? 121 26、大数据量下的分页解决...

    JAVA面试宝典2010

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    Java面试宝典2012版

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页...

    Toad 使用快速入门

    可以自定义存储过程得模板,在新建存储过程的时候,自动生成程序的框架可以方便的调用Schema Browser,把鼠标定位于某个对象上,F4,Schema Browser打开该对象的详细描述,帮助顺利快速开发程序。支持代码自动更正,...

    JSTL详细标签库介绍

    <BR>Java使用和C++类似的异常处理<BR>1、处理错误的方法有很多流行方法<BR>2、一般方法是把程序处理代码段分散到系统代码中,在可能发生错误的地方处理错误优点:便于程序员能够条理的看到程序中异常的处理缺点:...

    新版Android开发教程.rar

    程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...

    并行计算课程设计(报告+代码+可执行文件)

    先创建ThreadStart代理,指定要由该线程执行的线程函数,然后将ThreadStart代理传递给Thread类的构造函数,调用Thread类的Start方法启动新的线程然后调用Join()方法保证应用程序域等待异步程序结束后才终止运行。...

Global site tag (gtag.js) - Google Analytics