将Excel中的数据导入到sqlServer中,发现decimal(18,2)类型非整数数据比原先小了0.01。
代码如下:
- OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"
- + "Data Source="
- + Server.MapPath("../../uploadfiles/")
- + str + ";Extended Properties=Excel 8.0;");
@H_502_59@ OleDbDataAdapter da = @H_502_59@ new OleDbDataAdapter("SELECT * FROM [Sheet1$]", con);- DataTable dt = new DataTable();
@H_502_59@ da.Fill(dt); @H_502_59@ string rowGuid = Guid.NewGuid().ToString(); @H_502_59@ DaTarow[] rows = @H_502_59@ dt.Select("[经销商编码(*)] Is Null And [日期(*)] Is Null And [金额(*)] Is Null");- foreach (DaTarow row in rows)
@H_502_59@ {- dt.Rows.Remove(row);
@H_502_59@ }- DataColumn column = new DataColumn("rowGuid");
@H_502_59@ column.DefaultValue = rowGuid;- dt.Columns.Add(column);
@H_502_59@- sqlBulkcopy copy =
- new sqlBulkcopy(WebConfigurationManager.AppSettings["ConnectionString"].ToString());
@H_502_59@ copy.BatchSize = 1000;- copy.columnmappings.Add(0, "SDDealerCode");
@H_502_59@ copy.columnmappings.Add(1, "SDDealerName");- copy.columnmappings.Add(2, "PayDate");
@H_502_59@ copy.columnmappings.Add(3, "Balance");- copy.columnmappings.Add(4, "RowGuid");
- copy.DestinationTableName = "UT_PrePaid_Temp";
@H_502_59@ copy.WritetoServer(dt);
调试发现 数据在内存中时正常,进入数据库中后就不对了。
最终有经验的员工给出解决方式:
强制指定下 金额的类型
问题解决 但是不明白为什么。求解
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。