向Ms-Access数据库插入日期的问题

时间:2011-06-23 04:18:59

标签: c# winforms datetime

我的Ms-Access数据库表中有一个短日期格式的日期字段。

我在DateTimePicker dd/MM/yyyy日期格式的C#计划short控件中

我尝试使用C#代码插入数据,如下所示:

SQL = "insert into MyTbl(D_from,D_to) values (@MyFrom,@MyTo)";
OleDbCommand Cmd = Conn.CreateCommand();
OleDbParameter dateparam1 = Cmd.Parameters.AddWithValue("@MyFrom", DbType.DateTime);
dateparam1.Value = dt_From.Value; 

OleDbParameter dateparam2 = Cmd.Parameters.AddWithValue("@MyTo", DbType.DateTime);
dateparam2.Value = dt_To.Value;

Cmd.CommandText = SQL;
Cmd.ExecuteNonQuery();

我收到错误:Data type mismatch in criteria expression.

3 个答案:

答案 0 :(得分:2)

将Parameters.AddWithValue更改为Parameters.Add

Cmd.Parameters.Add("@MyFrom", DbType.DateTime);

如果您使用Parameters.AddWithValue,则需要将Value作为秒Parameter传递,而不是数据类型

Cmd.Parameters.AddWithValue("@MyFrom", dt_From.Value);

您还需要将CommandType设置为Text

答案 1 :(得分:0)

答案 2 :(得分:0)

试试这个

dateparam1.Value = dt_From.Value.ToShortDateString();
dateparam2.Value = dt_To.Value.ToShortDateString();

否则看看这个:

日期值必须根据ODBC规范日期格式分隔,或者由日期时间分隔符(“#”)分隔。否则,Microsoft Access会将该值视为算术表达式,不会引发警告或错误。

例如,日期“1996年3月5日”必须表示为{d'1996-03-05'}或#03/05/1996#;否则,如果仅提交03/05/1993,Microsoft Access将评估为3除以5除以1996.此值向上舍入为整数0,并且由于零日映射到1899-12-31,这是使用的日期。

管道字符(|)不能用在日期值中,即使用后面的引号括起来。