USE [Shop]
GO
/****** 对象:  StoredProcedure [dbo].[addorder]    脚本日期: 11/21/2012 22:37:13 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[addorder]
@Name nvarchar(50),
@Address nvarchar(50),
@Phone nvarchar(50),
@Mobile nvarchar(50),
@Transport nvarchar(50),
@UserId nvarchar(50)
 AS
insert into  Userorder (Name,Address,Phone,Mobile,Transport,UserId)values(@Name,@Address,@Phone,@Mobile,@Transport,@UserId)
RETURN @@Identity上面是个SQL的存储过程我想知道怎么才能在.net中把主键出去来啊
下面是我写的代码但是怎么取主键  SqlConnection conn = new SqlConnection();
        conn.ConnectionString = ConfigurationManager.ConnectionStrings["ShopConnectionString"].ConnectionString;
        conn.Open();
        SqlCommand comm = new SqlCommand();
        comm.Connection = conn;
       
        comm.CommandType = CommandType.StoredProcedure();
        SqlParameter[] sp = new SqlParameter();
        sp[1] = new SqlParameter("@Name", lblName.Text);
        sp[2] = new SqlParameter("@Address",lblDetailAddress.Text);
        sp[3]=new SqlParameter("@Phone",lblPhone.Text);
        sp[4]=new SqlParameter("@Mobile",txtMobilePhone.Text);
        sp[5]=new SqlParameter("@Transport",DropDownList1.SelectedIndex);      主要是下面的不知道怎么办啊
        //Parameter sp7=new Parameter(return,TypeCode);
        //    sp7=
        //sp[6]=new SqlParameter("@UserId",sp7);
        comm.Parameters.AddRange(sp);
        sp.Direction = ParameterDirection.ReturnValue;
        comm.CommandText = "addorder";

解决方案 »

  1.   

    ALTER PROCEDURE [dbo].[addorder]
    @Name nvarchar(50),
    @Address nvarchar(50),
    @Phone nvarchar(50),
    @Mobile nvarchar(50),
    @Transport nvarchar(50),
    @UserId nvarchar(50),
    @ReturnID int=0 output --返回值
      

  2.   

    存储过程在SQLServer已经写好了啊,就是怎么调用,你看看就是下面的啊
     //Parameter sp7=new Parameter(return,TypeCode);
            //    sp7=
            //sp[6]=new SqlParameter("@UserId",sp7);
            comm.Parameters.AddRange(sp);
            sp.Direction = ParameterDirection.ReturnValue;
            comm.CommandText = "addorder";
      

  3.   

    不好意思,你这里不是这种用法。
    objParas[6] = new SqlParameter("@intID", SqlDbType.Int, 4);
    objParas[6].Direction = ParameterDirection.ReturnValue;
    intID = Convert.ToInt32(objParas[6].Value)Cmd.Connection = Con;
              Cmd.CommandText = "addorder";
                    Cmd.CommandType = CommandType.StoredProcedure;                if (p_CmdParms != null)
                    {
                        foreach (SqlParameter objParm in p_CmdParms)
                            Cmd.Parameters.Add(objParm);
                    }
                    int intRet = Cmd.ExecuteNonQuery();
                    Cmd.Parameters.Clear();
      

  4.   

    直接使用 select @@identity,加在Insert语句之后,执行存储过程会自动返回Insert数据的主键值;
      

  5.   

    insert into UserInfo(name,sex) output inserted.id values('name1','sex1')
    返回的就是你新添加的id,比identity保险多了
      

  6.   

    USE [Shop]
    GO
    /****** 对象:  StoredProcedure [dbo].[addorder]    脚本日期: 11/21/2012 22:37:13 ******/
    SET ANSI_NULLS OFF
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    ALTER PROCEDURE [dbo].[addorder]
    @Name nvarchar(50),
    @Address nvarchar(50),
    @Phone nvarchar(50),
    @Mobile nvarchar(50),
    @Transport nvarchar(50),
    @UserId nvarchar(50)
     AS
    insert into  Userorder (Name,Address,Phone,Mobile,Transport,UserId)values(@Name,@Address,@Phone,@Mobile,@Transport,@UserId)
    RETURN @@Identity这个是数据库里面的存储过程,我怎么在.net中把@@Identity 取出并显示出来啊,求解释啊
      

  7.   

    SqlParameter param = new SqlParameter(name, SqlDbType.Int);
    param.Direction = ParameterDirection.ReturnValue;
    _cmd.Parameters.Add(param);//执行sql语句
    获取return值_cmd.Parameters[name].Value;
      

  8.   

     
    USE [Shop]
    GO
    /****** 对象:  StoredProcedure [dbo].[addorder]    脚本日期: 11/22/2012 13:16:10 ******/
    SET ANSI_NULLS OFF
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    ALTER PROCEDURE [dbo].[addorder]
    @Name nvarchar(50),
    @Address nvarchar(50),
    @Phone nvarchar(50),
    @Mobile nvarchar(50),
    @Transport nvarchar(50),
    @UserId nvarchar(50)
     AS
    insert into  Userorder (Name,Address,Phone,Mobile,Transport,UserId)values(@Name,@Address,@Phone,@Mobile,@Transport,@UserId)
    RETURN @@Identity
    上面是数据库插入一行存储过程
    下面是调用存储过程插入一行,但怎么才能插入这一行的同时把这一行的主键取出(主键是自增的就是上面的@@Identity,怎么才能就收啊)
    SqlConnection conn = new SqlConnection();
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["ShopConnectionString"].ConnectionString;
            conn.Open();
            SqlCommand comm = new SqlCommand();
            comm.Connection = conn;        SqlParameter[] sp = new SqlParameter[6];
            sp[0] = new SqlParameter("@Name", lblName.Text);
            sp[1] = new SqlParameter("@Address", lblDetailAddress.Text);
            sp[2] = new SqlParameter("@Phone", lblPhone.Text);
            sp[3] = new SqlParameter("@Mobile", txtMobilePhone.Text);
            sp[4] = new SqlParameter("@Transport", DropDownList1.SelectedIndex);
            sp[5] = new SqlParameter("@UserId", Session["username"].ToString());
            comm.Parameters.AddRange(sp);
            comm.CommandText = "addorder";
            comm.ExecuteNonQuery();
    怎么才能得到主键的值啊