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试试
估计长度不够,把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;
这个重载的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类型。对应的输入当然要是日期
的思路应该才是对的。既然写了OleDbType.DBDate类型。对应的输入当然要是日期
#5
谢谢fancyf的解答!
#6
TO freelyl(飞翔):
你自己试过了吗?你可以自己写个程序试一试,在Add里面根本没有第四个参数为object的重载
你自己试过了吗?你可以自己写个程序试一试,在Add里面根本没有第四个参数为object的重载
#1
command.Parameters.Add("@replytime",OleDbType.DBDate,10,DateTime.Now.ToString());
估计长度不够,把10改为20试试
估计长度不够,把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;
这个重载的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类型。对应的输入当然要是日期
的思路应该才是对的。既然写了OleDbType.DBDate类型。对应的输入当然要是日期
#5
谢谢fancyf的解答!
#6
TO freelyl(飞翔):
你自己试过了吗?你可以自己写个程序试一试,在Add里面根本没有第四个参数为object的重载
你自己试过了吗?你可以自己写个程序试一试,在Add里面根本没有第四个参数为object的重载