Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6513936
  • 博文数量: 915
  • 博客积分: 17977
  • 博客等级: 上将
  • 技术积分: 8846
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-26 09:59
个人简介

一个好老好老的老程序员了。

文章分类

全部博文(915)

文章存档

2022年(9)

2021年(13)

2020年(10)

2019年(40)

2018年(88)

2017年(130)

2015年(5)

2014年(12)

2013年(41)

2012年(36)

2011年(272)

2010年(1)

2009年(53)

2008年(65)

2007年(47)

2006年(81)

2005年(12)

分类: C#/.net

2013-03-22 15:29:58

C#在进行SQL Server数据库插入的时候,发生如下的问题(异常) ,从网上也看到很多朋友遇到这样的问题。
System.Data.SqlClient.SqlException (0x80131904):
传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 22 ("@p19"): 提供的值不是数据类型 real 的有效实例。请检查源数据中的无效值。例如,小数位数大于精度的数值类型的数据即为无效值。
基本可以总结的就是插入的某个值的精度大于数据库类型的精度,从而发生了异常。
不管你是用JDBC还是LINQ还是其它的什么,最好的办法是输出你的SQL语句,这样你就能很清晰的判断出是哪个字段超长了。
我由遇到的问题就是我的一个real类型字段超长了。
在C#中值是1.98E-41,而real只能存放1.0E-38的值。
在C#中就算你强制转换(float)doublevalue,其实在内存中还是1.98E-41不会变化(调试你就能看到),所以发生错误。
目前没有好的解决办法,只能说在对实体类赋值时判断,但如果值太多的话你就会判断不起了。呵呵。
阅读(10858) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~