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

 

 

 

目录
相关文章
|
2天前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
12 2
|
4天前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
15 1
|
8天前
|
Java 编译器
Java“返回类型为 void 的方法不能返回一个值”解决
在 Java 中,如果一个方法的返回类型被声明为 void,那么该方法不应该包含返回值的语句。如果尝试从这样的方法中返回一个值,编译器将报错。解决办法是移除返回值语句或更改方法的返回类型。
|
5天前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
|
8天前
|
Java
让星星⭐月亮告诉你,Java NIO之Buffer详解 属性capacity/position/limit/mark 方法put(X)/get()/flip()/compact()/clear()
这段代码演示了Java NIO中`ByteBuffer`的基本操作,包括分配、写入、翻转、读取、压缩和清空缓冲区。通过示例展示了`position`、`limit`和`mark`属性的变化过程,帮助理解缓冲区的工作原理。
17 2
|
8天前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
14 1
|
8天前
|
Java
让星星⭐月亮告诉你,Java synchronized(*.class) synchronized 方法 synchronized(this)分析
本文通过Java代码示例,介绍了`synchronized`关键字在类和实例方法上的使用。总结了三种情况:1) 类级别的锁,多个实例对象在同一时刻只能有一个获取锁;2) 实例方法级别的锁,多个实例对象可以同时执行;3) 同一实例对象的多个线程,同一时刻只能有一个线程执行同步方法。
9 1
|
8天前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
14 1
|
10天前
|
存储 算法 Java
java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题
这篇文章是关于如何在Java中使用Graphics2D的RenderingHints方法来提高海报制作的图像质量和文字清晰度,包括抗锯齿和解决文字不清晰问题的技术详解。
17 0
java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题
|
17天前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
21 5