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