数据库中有自增字段UID存储过程如下:CREATE     PROCEDURE   AddUser   
(   
@Username           nvarchar(50),   
@Email         nvarchar(100),   
@Password   nvarchar(50),   
@UserID       int   OUTPUT   
)   
AS   
INSERT   INTO   Users   
(   
          Username,   
          Email,   
          Password   
  )   
    
  VALUES   
  (   
          @Username,   
          @Email,   
          @Password   
  )   
    
  SELECT   
          @UserID   =   @@Identity   
  GO 程序如下:
SqlCommand cmd=new SqlCommand("AddUser",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@Username",Username));
cmd.Parameters.Add(new SqlParameter("@Email",Email));
cmd.Parameters.Add(new SqlParameter("@Password",Password));然后如何得到刚刚插入记录的UID的值呢?
在这里我写不下去了,望大哥们指教.......

解决方案 »

  1.   

    indentdy  UserIDCREATE     PROCEDURE   AddUser   
    (  
    @UserID       int   OUTPUT 
    @Username           nvarchar(50),   
    @Email         nvarchar(100),   
    @Password   nvarchar(50),   
      
    )
      

  2.   

    indentdy  UserIDCREATE     PROCEDURE   AddUser   
    (  
    @UserID       int  ,
    @Username           nvarchar(50),   
    @Email         nvarchar(100),   
    @Password   nvarchar(50),   
      
    )
      

  3.   

    SqlCommand cmd=new SqlCommand("AddUser",conn);
    cmd.CommandType=CommandType.StoredProcedure;
    cmd.Parameters.Add(new SqlParameter("@Username",Username));
    cmd.Parameters.Add(new SqlParameter("@Email",Email));
    cmd.Parameters.Add(new SqlParameter("@Password",Password));
    cmd.parameters.add(new sqlparameter("@UserID",sqltype.int);
    cmd.parameters["@userid"].direction = Direction.output;CMD执行int UID;
    UID = cmd.Parameters["@userid"];
      

  4.   

    大致是这样的吧,你调试一下试试:
    SqlCommand cmd = new SqlCommand("AddUser", conn);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add(new SqlParameter("@Username", Username));
    cmd.Parameters.Add(new SqlParameter("@Email", Email));
    cmd.Parameters.Add(new SqlParameter("@Password", Password));SqlParameter outPara = new SqlParameter("@UserID", SqlDbType.Int);
    outPara.Direction = ParameterDirection.Output;
    cmd.Parameters.Add(outPara);
    if (cmd.ExecuteNonQuery() > -1)
    {
    if (outPara.Value is int)
    {
    int retValue = (int)outPara.Value;
    }
    }
      

  5.   

    SqlParameter.Direction 属性
    获取或设置一个值,该值指示参数是只可输入、只可输出、双向还是存储过程返回值参数。属性值
    ParameterDirection 值之一。默认为 Input。 
     Input 参数是输入参数。  
     InputOutput 参数既能输入,也能输出。  
     Output 参数是输出参数。  
     ReturnValue 参数表示诸如存储过程、内置函数或用户定义函数之类的操作的返回值。  
      

  6.   

    是2003,按你给的写法,编译出错
    F:\Office\OfferAdd.aspx.cs(228): 找不到类型或命名空间名称“Direction”(是否缺少 using 指令或程序集引用?)
      

  7.   

    create table #
    (
    id int identity(1,1),
    [value] int
    )insert into #([value]) values(100)
    select scope_identity()insert into #([value]) values(100)
    select scope_identity()insert into #([value]) values(100)
    select scope_identity()drop table #
      

  8.   

    已经有过了using System.Data;
      

  9.   

    如果是这个具体的问题,根本就不需要输出参数和返回值!!!CREATE     PROCEDURE   AddUser   
    (   
    @Username           nvarchar(50),   
    @Email         nvarchar(100),   
    @Password   nvarchar(50),   
    )   
    AS   
    INSERT   INTO   Users   
    (   
              Username,   
              Email,   
              Password   
      )   
        
      VALUES   
      (   
              @Username,   
              @Email,   
              @Password   
      )   ;SELECT  @@Identity   
      GO 
    直接用获取单值的方法拿值就行了~~~ 就像 SELECT psw FROM Usr WHERE Uid = 'me' 一样。