return (int)cmd.Parameters["ReturnValue"].Value的返回值是什么
插入成功应该是多少?  失败应该是多少
public int RunProc(string procName, SqlParameter[] prams)
    {
        SqlCommand cmd = CreateCommand(procName, prams);
        cmd.ExecuteNonQuery();
        this.Close();
        //得到执行成功返回值
        return (int)cmd.Parameters["ReturnValue"].Value;
    }
 private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
    {
        // 确认打开连接
        this.Open();
        SqlCommand cmd = new SqlCommand(procName, con);
        cmd.CommandType = CommandType.Text;     //执行SQL类型:命令文本        // 依次把参数传入命令文本
        if (prams != null)
        {
            foreach (SqlParameter parameter in prams)
                cmd.Parameters.Add(parameter);
        }
        // 加入返回参数
        cmd.Parameters.Add(
            new SqlParameter("ReturnValue", SqlDbType.Int, 4,
            ParameterDirection.ReturnValue, false, 0, 0,
            string.Empty, DataRowVersion.Default, null));        return cmd;
    }

解决方案 »

  1.   

    procName是存储过程名称,要看调用时,传入的存储过程的定义中,返回值是多少。
    如果执行成功,就应该返回存储过程中定义的返回值,所以你要分析调用时传给存储过程的参数,已经根据该参数存储过程执行后的返回值。看.net程序肯定无法知道的
      

  2.   

    Output 此参数只用于将信息从存储过程传输回应用程序。 
    ReturnValue 此参数表示存储过程的返回值。SQL Server 的存储过程参数列表中不显示该参数。它只与存储过程的 RETURN 语句中的值相关联。 
    ParameterDirection.ReturnValue
      

  3.   

    那我INSERT了一条语句 他应该返回什么值?
    我断点调试  他返回的是0  可是数据库操作是成功的我要是跟他这个返回值来判断 数据库插入是否成功该怎么判断
      

  4.   

    就插入一条信息也会不知道 返回值是多少吗?他的返回值是基于什么改变的?  执行SQL影响行数吗?
      

  5.   

    它的值是由存储过程返回的,是一个int至于他会返回什么值,完全是由自己定的,查看存储过程的脚本就能知道。。
      

  6.   

    两种方法
    1、不指定返回参数create  PROCEDURE procedureName
    AS
    set nocount on  --不返回受影响的行数--插入一条消息记录
    INSERT INTO tablename(fields)
    VALUES(values)RETURN 1 如果插入成功,这时返回1,.net中这样读取:SqlParameter return_values = cmd.Parameters.Add("rvl", SqlDbType.Int);
     return_values.Direction = ParameterDirection.ReturnValue;
     //执行语句
     ……
     int returnValue = (int)return_values.Value;
    2、指定返回参数create  PROCEDURE procedureName
    @ReturnValue out int
    AS
    set nocount on  --不返回受影响的行数--插入一条消息记录
    INSERT INTO tablename(fields)
    VALUES(values)@ReturnValue = 1;
    RETURN @ReturnValue如果插入成功,这时返回1,.net中这样读取:SqlParameter param=new SqlParameter("ReturnValue", SqlDbType.Int, 4,ParameterDirection.Output);
    //执行语句
    ……
    cmd.Parameters["ReturnValue"].Value;
      

  7.   

    那就是说我要把这个 里面ParameterDirection.ReturnValue换成ParameterDirection.Output这个呗
    能解释下 这两个值是什么意思吗 参数代表什么?
    cmd.Parameters.Add(
                new SqlParameter("ReturnValue", SqlDbType.Int, 4,
                ParameterDirection.ReturnValue, false, 0, 0,
                string.Empty, DataRowVersion.Default, null));