C#使用OleDB操作ACCESS插入数据时提示:标准表达式中数据类型不匹配。
OleDbParameter param = new OleDbParameter("" + dc.ColumnName, dc.DataType); param.IsNullable = dc.AllowDBNull; if (dr_src.Table.Columns.Contains(dc.ColumnName)) { if (!(dr_src[dc.ColumnName] is System.DBNull)) { if (dc.DataType.FullName.Equals("System.DateTime")) { param.Value = dr_src[dc.ColumnName].ToString(); } else { param.Value = dr_src[dc.ColumnName]; } } else { param.Value = dc.DefaultValue; if (dc.DataType.FullName.Equals("System.Decimal")) { param.Value = System.Decimal.Zero; } if (dc.DataType.FullName.Equals("System.String")) { param.Value = String.Empty; } } } else { param.Value = dc.DefaultValue; }
导致该问题的罪魁祸首为 System.DateTime 类型的字段
if (dc.DataType.FullName.Equals("System.DateTime")) { param.Value = dr_src[dc.ColumnName].ToString(); }
在线该类型的Parameter赋值时,不能传递 System.DateTime 类型,而是需要传递 String 类型。