閱讀625 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

 

 

 

最後更新:2017-04-02 00:06:48

  上一篇:go Jdom寫xml文件實例
  下一篇:go 給某個DIV容器賦值js函數,ajax中使用,支持ie和firefox