我在执行插入语句时出现"参数 @replytime 没有默认值"具体代码如下:
OleDbCommand command = new OleDbCommand("insert into reply(titleid,replycontent,usrid,replytime) values(@titleid,@replycontent,1,@replytime)", this.oleConn);
command.Parameters.Add("@titleid",this.titleid);
command.Parameters.Add("@replycontent",Server.HtmlEncode(this.TextBox1.Text));
command.Parameters.Add("@replytime",OleDbType.DBDate,10,DateTime.Now.ToString());
command.ExecuteNonQuery();但我把command.Parameters.Add("@replytime",OleDbType.DBDate,10,DateTime.Now.ToString());
改为command.Parameters.Add("@replytime",DateTime.Now.ToString());问题解决了,请问为什么?
谢谢!

解决方案 »

  1.   

    command.Parameters.Add("@replytime",OleDbType.DBDate,10,DateTime.Now.ToString());
    估计长度不够,把10改为20试试
      

  2.   

    @replytime参数类型是OleDbType.DBDate,它对应于.net框架中的DateTime,而你传的值即是一个string,去掉 DateTime.Now.ToString() 中的ToString()试试。
      

  3.   

    command.Parameters.Add("@replytime",OleDbType.DBDate,10,DateTime.Now.ToString());
    这个重载的Add原型是
    [C#]
    public OleDbParameter Add(
       string parameterName,
       OleDbType oleDbType,
       int size,
       string sourceColumn
    );
    最后一个参数是sourceColumn,而不是参数的Value,也就是说,你用
    command.Parameters.Add("@replytime",OleDbType.DBDate,10,DateTime.Now.ToString());
    其实并没有给这个参数赋值,只是指定了一个sourceColumn,在这里没有用
    解决办法用后面那个
    command.Parameters.Add("@replytime",DateTime.Now.ToString());
    或者
    command.Parameters.Add("@replytime",OleDbType.DBDate,10).Value = DateTime.Now;
      

  4.   

    webdiyer(陕北吴旗娃) 
    的思路应该才是对的。既然写了OleDbType.DBDate类型。对应的输入当然要是日期
      

  5.   

    TO freelyl(飞翔):
    你自己试过了吗?你可以自己写个程序试一试,在Add里面根本没有第四个参数为object的重载