微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据导入SqlServer decimal变小了

将Excel中的数据导入到sqlServer中,发现decimal(18,2)类型非整数数据比原先小了0.01。

 

错误数据

 

代码如下:

 
 
  1. OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" 
  2. "Data Source=" 
  3. + Server.MapPath("../../uploadfiles/")
  4.  + str + ";Extended Properties=Excel 8.0;");  
  5. @H_502_59@                     OleDbDataAdapter da = @H_502_59@ new OleDbDataAdapter("SELECT * FROM [Sheet1$]", con);  
  6.                     DataTable dt = new DataTable();  
  7. @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");  
  8.                     foreach (DaTarow row in rows)  
  9. @H_502_59@                    {  
  10.                         dt.Rows.Remove(row);  
  11. @H_502_59@                    }  
  12.                     DataColumn column = new DataColumn("rowGuid");  
  13. @H_502_59@                    column.DefaultValue = rowGuid;  
  14.  
  15.                     dt.Columns.Add(column);
  16. @H_502_59@ 
  17.                     sqlBulkcopcopy = 
  18. new sqlBulkcopy(WebConfigurationManager.AppSettings["ConnectionString"].ToString());  
  19. @H_502_59@                    copy.BatchSize = 1000;  
  20.                     copy.columnmappings.Add(0, "SDDealerCode");  
  21. @H_502_59@                     copy.columnmappings.Add(1, "SDDealerName");  
  22.                     copy.columnmappings.Add(2, "PayDate");  
  23. @H_502_59@                     copy.columnmappings.Add(3, "Balance");  
  24.                     copy.columnmappings.Add(4, "RowGuid");   
  25.                     copy.DestinationTableName = "UT_PrePaid_Temp";  
  26. @H_502_59@                    copy.WritetoServer(dt); 

调试发现 数据在内存中时正常,进入数据库中后就不对了。

最终有经验的员工给出解决方式:

 

 
 
  1. DataTable dt = new DataTable();  
  2. @H_502_59@ dt.Columns.Add("经销商编码(*)");  
  3. dt.Columns.Add("经销商名称");  
  4. @H_502_59@ dt.Columns.Add("日期(*)");  
  5. dt.Columns.Add("金额(*)"typeof(System.Decimal));  
  6. @H_502_59@da.Fill(dt); 

强制指定下 金额的类型

问题解决 但是不明白为什么。求解

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐