小弟刚接触存储过程,在看别人调用存储过程时,小有那么一段代码有问题!! 那位大侠指点哈!
                command.Parameters.Add(new SqlParameter("ReturnValue",
                SqlDbType.Int, 4, ParameterDirection.ReturnValue,
                false, 0, 0, string.Empty, DataRowVersion.Default, null));  啥意思????
   还有就是这里具体取得是?????  
                command.Parameters["ReturnValue"].Value

解决方案 »

  1.   


    初学先了解参数的概念,声明的时候 申明参数名和类型,赋值即可。。  new SqlParameter("参数变量名",赋值),这样写是最简单的。
      

  2.   

    bdmh 你所说的“先创建参数”指的是只要带输出参数的存储过程就需要这么给一个参数么??
      

  3.   

    给你一段带注释的代码//调用存储过程                    //连接数据库
                        SqlConnection myConn1 = new SqlConnection(sqlConn);
                        myConn1.Open();                    //创建SqlCommand对象
                        SqlCommand cmd = new SqlCommand("sp_upate_all_dept_id", myConn1);//sp_upate_all_dept_id为存储过程名称
                        cmd.CommandType = CommandType.StoredProcedure;                    //添加参数
                        SqlParameter old_dept_id = cmd.Parameters.Add("@old_dept_id", SqlDbType.Int);
                        SqlParameter new_dept_id = cmd.Parameters.Add("@new_dept_id", SqlDbType.Int);
                        SqlParameter us_id = cmd.Parameters.Add("@us_id", SqlDbType.Int);
                        SqlParameter returnvalue = cmd.Parameters.Add("@returnvalue", SqlDbType.Int);                    //指定参数是只可输入(Input)、输出(Output)还是返回值(ReturnValue)
                        old_dept_id.Direction = ParameterDirection.Input;
                        new_dept_id.Direction = ParameterDirection.Input;
                        us_id.Direction = ParameterDirection.Input;
                        returnvalue.Direction = ParameterDirection.ReturnValue;                    //为传递给存储过程的参数赋值
                        old_dept_id.Value = Convert.ToInt16(o_dept_id);
                        new_dept_id.Value = Convert.ToInt16(dept_id);
                        us_id.Value = Convert.ToInt16(id);                    //执行SQL存储过程
                        cmd.ExecuteNonQuery();                    //得到并判断返回值
                        if ((int)returnvalue.Value == 1)
                        {
                            Response.Write("<script>javascript:alert('系统错误,请联系管理员!');window.parent.location.href=('xxx.aspx');</script>");
                            return;
                        }
      

  4.   

    还有就是这段代码中的: parameters[0].Direction = ParameterDirection.Output; 应该是指明 @id 为输出参数吧!!   这里的ParameterDirection.Output  与前面的那两段代码有联系么?如果有,那是???小弟很菜 还望大虾指点一下!!
      
    SqlParameter[] parameters = {
    new SqlParameter("@id", SqlDbType.Int,4),
    new SqlParameter("@typeId", SqlDbType.Int,4),
    new SqlParameter("@title", SqlDbType.VarChar,200),
    new SqlParameter("@content", SqlDbType.Text),
    new SqlParameter("@imagePaht", SqlDbType.VarChar,100),
    new SqlParameter("@htmlSource", SqlDbType.Text),
    new SqlParameter("@setDate", SqlDbType.DateTime),
    new SqlParameter("@userId", SqlDbType.Int,4),
    new SqlParameter("@files", SqlDbType.VarChar,500),
                        new SqlParameter("@bum_bz",SqlDbType.Int,4),
                        new SqlParameter("@filename",SqlDbType.VarChar,500),
                        new SqlParameter("@readUser",SqlDbType.VarChar,500)};
                parameters[0].Direction = ParameterDirection.Output;
                parameters[1].Value = model.TypeId;
                parameters[2].Value = model.Title;
                parameters[3].Value = model.Content;
                parameters[4].Value = model.ImagePaht;
                parameters[5].Value = model.HtmlSource;
                parameters[6].Value = model.SetDate;
                parameters[7].Value = model.UserId;
                parameters[8].Value = model.Files;
                parameters[9].Value = model.Bum_bz;
                parameters[10].Value = model.Filename;
                parameters[11].Value = model.ReadUser;
      

  5.   

    mjfei  我弱弱的问一下  在这段代码中
    //添加参数
                        SqlParameter old_dept_id = cmd.Parameters.Add("@old_dept_id", SqlDbType.Int);
                        SqlParameter new_dept_id = cmd.Parameters.Add("@new_dept_id", SqlDbType.Int);
                        SqlParameter us_id = cmd.Parameters.Add("@us_id", SqlDbType.Int);
                        SqlParameter returnvalue = cmd.Parameters.Add("@returnvalue", SqlDbType.Int);     @returnvalue是创建存储过程中定义的参数么???