Есть другие вопросы с похожими названиями, но мой случай кажется уникальным, так что вот так:
Эта проблема, кажется, связана с использованием десятичных значений в моей таблице. Если я создаю таблицу и пропускаю параметры Precision и Scale, таблица создается, но все мои данные вставляются как целочисленное значение. Если я создаю таблицу и указываю параметры Precision и Scale, я получаю исключение ниже моих операторов SQL.
Вот мой оператор Создать таблицу:
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, но это должно быть в порядке, поскольку создается таблица.
Если таблица существует, оператор 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.Length = 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 (без двоичных файлов) >> ЗДЕСЬ << </a> (я удалю ссылку на проект после этой проблемы решен).