存储过程:
CREATE PROCEDURE UpdateNews@NewsId int,
@NewsTitle nchar(400),
@NewsDate varchar(50),
@NewsContent nvarchar(4000),
@NewsAuthor varchar(50)AS
 
update [NewsT]
set NewsTitle=@NewsTitle,NewsDate=@NewsDate,NewsContent=@NewsContent,NewsAuthor=@NewsAuthor
where NewsId=@NewsId
GO表中 NewsDate 是datetime类型
源码:
private void Updatenews(int NewsId,string NewsTitle,string NewsDate,string NewsContent,string NewsAuthor)
    {
                string StrConn = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
                SqlParameter[] parms = new SqlParameter[5];                parms[0] = new SqlParameter("@NewsId",SqlDbType.Int);
                parms[0].Direction = ParameterDirection.Input;
                parms[0].Value =NewsId;                parms[1] = new SqlParameter("@NewsTitle",SqlDbType.NChar,400);
                parms[1].Direction = ParameterDirection.Input;
                parms[1].Value =NewsTitle;                parms[2] = new SqlParameter("@NewsDate",SqlDbType.VarChar,50);
                parms[2].Direction = ParameterDirection.Input;
                parms[2].Value = DateTime.Parse(Convert.ToDateTime(NewsDate.Trim()).ToString("yyyy-MM-dd"))
;                parms[3] = new SqlParameter("@NewsContent",SqlDbType.NVarChar,4000);
                parms[3].Direction = ParameterDirection.Input;
                parms[3].Value =NewsContent;                parms[4] = new SqlParameter("@NewsAuthor",SqlDbType.VarChar,50);
                parms[4].Direction = ParameterDirection.Input;
                parms[4].Value =NewsAuthor;                ExecPro.ExecPro.ExecuteNonQuery(StrConn, CommandType.StoredProcedure, "Updatenews", parms);    }
            protected void  Button1_Click(object sender, EventArgs e)
{
    Updatenews(Convert.ToInt32(Request.QueryString["id"].ToString()), TxtNewsTitle.Text, TxtNewsAuthor.Text, TxtNewsContent.Text, TxtNewsDate.Text);  
}
调试了很长时间找不错误,帮忙看一下,急!

解决方案 »

  1.   

     parms[2] = new SqlParameter("@NewsDate",SqlDbType.VarChar,50); 
                    parms[2].Direction = ParameterDirection.Input; 
                    parms[2].Value = DateTime.Parse(Convert.ToDateTime(NewsDate.Trim()).ToString("yyyy-MM-dd")) 
    ; 你这传的是DateTime
    但你存储过程里参数是@NewsDate varchar(50), 
    这怎么可以匹配呢
      

  2.   

    @NewsDate varchar(50), 字符串型
    parms[2].Value = DateTime.Parse(Convert.ToDateTime(NewsDate.Trim()).ToString("yyyy-MM-dd")) 转换成了日期类型
      

  3.   

    parms[2] = new SqlParameter("@NewsDate",SqlDbType.VarChar,50); 
                    parms[2].Direction = ParameterDirection.Input; 
                    parms[2].Value = Convert.ToDateTime(NewsDate.Trim()).ToString("yyyy-MM-dd")

    这样直接用 string的应该就可以了
      

  4.   

    parms[2] = new SqlParameter("@NewsDate",SqlDbType.VarChar,50); 
    parms[2].Direction = ParameterDirection.Input; 
    parms[2].Value = Convert.ToDateTime(NewsDate.Trim()).ToString("yyyy-MM-dd");
    这样就行了