关于“参数没有默认值”的问题

时间:2021-10-17 05:33:05
我在执行插入语句时出现"参数 @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());问题解决了,请问为什么?
谢谢!

6 个解决方案

#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


谢谢fancyf的解答!

#6


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

#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


谢谢fancyf的解答!

#6


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