SqlCeException:表达式求值导致溢出
本文关键字:溢出 表达式 SqlCeException | 更新日期: 2023-09-27 18:01:25
还有其他类似的问题,但我的情况似乎是独一无二的,所以这里是:
这个问题似乎集中在使用十进制值在我的表。如果我创建一个表并省略Precision和Scale参数,则表将创建,但我的所有数据都将作为整数值插入。如果我创建了一个表并指定了Precision和Scale参数,我就会在SQL语句下面抛出异常。
下面是我的Create Table语句:CREATE TABLE RMCoil
(
ID int IDENTITY (100,1) PRIMARY KEY
, Modified DateTime NOT NULL
, [Type] nchar(1)
, [Model] nvarchar(50)
, [CPPartNo] nvarchar(50)
, [FH] decimal(10,10)
, [FL] decimal(10,10)
, [FPI] int
, [TR] nchar(1)
, [FinThk] decimal(10,10)
, [FinMat] nchar(1)
, [TubeOD] int
, [Rifled] nchar(1)
, [WallThk] decimal(10,10)
, [CKT] int
, [RD] int
, [Split] nvarchar(50)
, [CKT1] int
, [CKT2] int
, [CKT3] int
, [CKT4] int
, [Feed1] int
, [Feed2] int
, [Feed3] int
, [Feed4] int
, [Altitude] decimal(10,10)
, [Connection] decimal(10,10)
, [Header] decimal(10,10)
)
SqlCeCommand.ExecuteNonQuery()返回-1,但这必须是OK的,因为它创建了表。
如果存在表,SELECT语句可以正常工作:
SELECT
ID
, Modified
, [ID]
, [MODIFIED]
, [Model]
, [VoltCode]
, [Vendor]
, [Product]
, [ACRLA208SP]
, [LRA208SP]
, [ACRLA230SP]
, [LRA230SP]
, [ACRLA208]
, [LRA208]
, [ACRLA230]
, [LRA230]
, [ACRLA380]
, [LRA380]
, [ACRLA460]
, [LRA460]
, [ACRLA575]
, [LRA575]
, [ECRLA208]
, [ECRLA230]
, [ECRLA460]
, [ECRLA575]
, [Displacement]
, [CF0]
, [CF1]
, [CF2]
, [CF3]
, [CF4]
, [CF5]
, [CF6]
, [CF7]
, [CF8]
, [CF9]
, [CF10]
, [CF11]
, [CF12]
, [CF13]
, [CF14]
, [CF15]
, [CF16]
, [CF17]
, [CF18]
, [CF19]
, [CF20]
, [CF21]
, [CF22]
, [CF23]
, [CF24]
, [CF25]
, [CF26]
, [CF27]
, [CF28]
, [CF29]
, [CF30]
, [CF31]
, [CF32]
, [CF33]
, [CF34]
, [CF35]
, [CF36]
, [CF37]
, [CF38]
, [CF39]
FROM RMCompressor
SqlCeCommand.CommandText。长度= 633
INSERT INTO RMCompressor
(
Modified
, [Model]
, [VoltCode]
, [Vendor]
, [Product]
, [ACRLA208SP]
, [LRA208SP]
, [ACRLA230SP]
, [LRA230SP]
, [ACRLA208]
, [LRA208]
, [ACRLA230]
, [LRA230]
, [ACRLA380]
, [LRA380]
, [ACRLA460]
, [LRA460]
, [ACRLA575]
, [LRA575]
, [ECRLA208]
, [ECRLA230]
, [ECRLA460]
, [ECRLA575]
, [Displacement]
, [CF0]
, [CF1]
, [CF2]
, [CF3]
, [CF4]
, [CF5]
, [CF6]
, [CF7]
, [CF8]
, [CF9]
, [CF10]
, [CF11]
, [CF12]
, [CF13]
, [CF14]
, [CF15]
, [CF16]
, [CF17]
, [CF18]
, [CF19]
, [CF20]
, [CF21]
, [CF22]
, [CF23]
, [CF24]
, [CF25]
, [CF26]
, [CF27]
, [CF28]
, [CF29]
, [CF30]
, [CF31]
, [CF32]
, [CF33]
, [CF34]
, [CF35]
, [CF36]
, [CF37]
, [CF38]
, [CF39])
VALUES
(
GetDate()
, @Model
, @VoltCode
, @Vendor
, @Product
, @ACRLA208SP
, @LRA208SP
, @ACRLA230SP
, @LRA230SP
, @ACRLA208
, @LRA208
, @ACRLA230
, @LRA230
, @ACRLA380
, @LRA380
, @ACRLA460
, @LRA460
, @ACRLA575
, @LRA575
, @ECRLA208
, @ECRLA230
, @ECRLA460
, @ECRLA575
, @Displacement
, @CF0
, @CF1
, @CF2
, @CF3
, @CF4
, @CF5
, @CF6
, @CF7
, @CF8
, @CF9
, @CF10
, @CF11
, @CF12
, @CF13
, @CF14
, @CF15
, @CF16
, @CF17
, @CF18
, @CF19
, @CF20
, @CF21
, @CF22
, @CF23
, @CF24
, @CF25
, @CF26
, @CF27
, @CF28
, @CF29
, @CF30
, @CF31
, @CF32
, @CF33
, @CF34
, @CF35
, @CF36
, @CF37
, @CF38
, @CF39
)
SqlCeException: Expression evaluation caused an overflow. [ Name of function (if known) = ]
HResult: -2147217900
NativeError: 25901
来源: SQL Server Compact ADO.NET Data Provider
有人知道如何读取HResult或NativeError吗?
我的INSERT语句不是太长或什么,是吗?
如果它有帮助,我已经上传了我的Visual Studio 2010 c#项目SqlCeTool(没有二进制文件)>>这里<<(我将删除我的项目链接后,这个问题得到解决)。
您正在创建具有相同精度和比例的十进制值,这是预期的吗?目前,您正在创建像Altitude这样的字段,它可以包含0.0000000000到0.9999999999的值(假设我没算错)。我相信你会想要调整你的精度和比例,像海拔(20,10)
Books On Line一篇讨论精度、比例和长度的文章Money引用:"精度是一个数中的位数。小数是一个数中小数点右边的位数。例如,数字123.45的精度是5,比例是2。"