param = new sqlparameter("@parametername", sqldbtype.datetime); 
param.direction = parameterdirection.input; 
param.value = convert.todatetime(inputdate); 
cmd.parameters.add(param); 

解决方案 »

  1.   

    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;
      

  2.   


    如果我传进去的是空,我用上面的SQL语句应该不行吧,但是用SQL就可以
      

  3.   

    exec procInsert
    最后这句不要了吧
      

  4.   

    用断点获取sql语句就可以知道了   
     你没进数据库之前sql语句是string类型的  即使是空值sql语句也不会报错得
    int reg = sqlhelper.ExcuteNonQuery(proName, paras, CommandType.Text);
    之前设置断点 调试就很清楚了
      

  5.   

    可以确定的是参数是传过来的了,把存储过程改为SQL语句,值就加进数据库了的,调试到paras这里,paras是获得了我从页面传递过来的值
      

  6.   


    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",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;
      

  7.   

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

  8.   

    +1
    new SqlParameter()没有提供赋值的参数
      

  9.   

    CommandType.Text?!!! 牛了  明明是存储过程啊 ProductStore吧?
      

  10.   

    "@Title"之间可能有空格了,今天也是犯了这个错误,解决了,呵呵