日期:2014-05-17  浏览次数:20455 次

过程或函数 'procInsert' 需要参数 '@Title',但未提供该参数。
大家帮我看看为什么啊
  public bool Insert(News n)
        {
            bool flag = false;
            string proName = "procInsert";
            //string proName = "insert into T_News(Title,CatId,Content) values(@Title,@CatId,@Content)";
            SqlParameter[] paras = new SqlParameter[] { 
            new SqlParameter("@Title",n.Title),
            new SqlParameter("@CatId",n.Catid),
            new SqlParameter("@Content",n.Content)
            };
            int reg = sqlhelper.ExcuteNonQuery(proName, paras, CommandType.Text);
            if (reg > 0)
            {
                flag = true;
            }
            return flag;
        }
存储过程:ALTER PROCEDURE procInsert
/*
(
@parameter1 int = 5,
@parameter2 datatype OUTPUT
)
*/
@Title varchar(50),
@CatId int,
@Content text
AS
insert into T_News(Title,CatId,Content) values(@Title,@CatId,@Content)
return
exec procInsert


如果我换成SQL语句就可以,用存储过程就不行了
------解决方案--------------------


SqlParameter[] paras = new SqlParameter[] {  
  new SqlParameter("@Title",sqldbtype.VarChar),
  new SqlParameter("@CatId",sqldbtype.Int),
  new SqlParameter("@Content",sqldbtype.VarChar)
}

paras[0].direction = parameterdirection.input;
paras[0].value =n.Title;
paras[1].direction = parameterdirection.input;
paras[1].value =n.Catid;
paras[2].direction = parameterdirection.input;
paras[2].value =n.Content;





------解决方案--------------------
LZ,你都没传数据给title,还有楼主最好别直接给参数,最好在sqlpar那个里面先定义,然后par.vales[1]="参数",这样执行速度比你那样写要快10倍,大数据量你就知道了