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 类型。