将日期插入Ms Access数据库时出现问题

本文关键字:问题 数据库 Access 日期 插入 Ms | 更新日期: 2023-09-27 17:59:57

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

我的C#程序中有DateTimePicker控件,dd/MM/yyyy 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.

将日期插入Ms Access数据库时出现问题

将Parameters.AddWithValue更改为Parameters.Add

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

如果使用Parameters.AddWithValue,则需要将Value作为第二个Parameter传递,而不是将DataType 传递

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

并且您还需要将CommandType设置为Text

看看这个问题

条件表达式|Access、OleDb、C#中的数据类型不匹配

试试这个

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

否则就看这个:

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

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

管道字符(|)不能用于日期值,即使用后引号括起来也是如此。