将日期插入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.
将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,因此这是使用的日期。
管道字符(|)不能用于日期值,即使用后引号括起来也是如此。