存储过程:
CREATE PROCEDURE [insert_employee_1]
(@name_1  [varchar](50),
 @age_2  [varchar](50),
 @address_3  [varchar](50))AS INSERT INTO [progtest].[dbo].[employee] 
 ( [name],
 [age],
 [address]) 
 
VALUES 
( @name_1,
 @age_2,
 @address_3)select @@identity
GO
=========================
我用getMoreResults(),getResult()和getUpdateCount()都得不到结果,知道的朋友帮帮忙,怎样得到结果?

解决方案 »

  1.   


    CREATE  PROCEDURE [insert_employee_1]
     @name_1 [varchar](50),
     @age_2 [varchar](50),
     @address_3 [varchar](50),
     @id int out
    AS 
    INSERT INTO dbo.h_sms_PublicUserMo_tb(UserID,ProductID,FeatureStr,CreateTime) 
    VALUES (@name_1,@age_2,@address_3,getdate())
    --select @@identity
    set @id=@@identity
    returnGO    public int getId(){
        
         int id = 0;
    Connection conn = null;
            Statement stmt = null;

    try {
             conn = this.db.getConnection();
                stmt = conn.createStatement();
    String sql = "{call dbo.insert_employee_1(?,?,?,?)}";
    CallableStatement st = conn.prepareCall(sql);
    st.setString(1,"13811217419");
         st.setString(2,"fdasfdsa");
         st.setString(3,"fdasfdsafads");
    st.registerOutParameter(4, Types.INTEGER);
    st.execute();
    id = st.getInt(4);
    st.close();
    } catch (Exception e) {
    logger.debug(e.toString());
    } finally {
    try {
    if(conn!=null)
    conn.close();
    } catch (SQLException e) {
    logger.debug("getContent "+e.toString());
    }
    }
    return id;
        }
      

  2.   

    CREATE PROCEDURE [insert_employee_1]
    (@name_1  [varchar](50),
     @age_2  [varchar](50),
     @address_3  [varchar](50),
     @id int out 
    )
     AS INSERT INTO [progtest].[dbo].[employee] 
     ( [name],
     [age],
     [address]) 
     
    VALUES 
    ( @name_1,
     @age_2,
     @address_3)set @id=@@identityreturn 
    GO
    存储过程放在 查询分析器 执行时,提示缺少@id的参数
    ======================
    CallableStatement cs=con.prepareCall("{call insert_employee_1(?,?,?)}");
    cs.setString(1, "11111");
    cs.setString(2, "222222");
    cs.setString(3, "3333333");
    cs.registerOutParameter(4, Types.INTEGER);
    cs.execute();
           int id=cs.getInt(4);
    还是得不到结果啊,哪里出问题了?!!
    是不是只有在存储过程里用了 out 参数,才在java里用registerOutParameter()方法注册输出参数。1
      

  3.   

    找到错误了,("{call insert_employee_1(?,?,?)}"); 少了个?,加上输出参数应该4个?,加上了结果就出来了谢谢Samanoseky(rain) 了