2013-06-10 3 views
0

У меня есть объект со следующими данными:Ошибка CE Тип преобразования данных SQL Server

{ 
    "ItemID": "0000000", 
    "ConsignmentID": "0000000", 
    "CountryCreateDate": "24/05/2013 3:20:02 a.m.", 
    "Reference": "00000000", 
    "Packaging": "0", 
    "Weight": "0", 
    "WeightCubic": "0", 
    "Length": "0", 
    "Width": "0", 
    "Height": "0", 
    "seqNumber": "0", 
    "DatePrinted": "", 
    "ad_Excess": "0", 
    "Price_Cost": "", 
    "Price_Other": "", 
    "Price_OtherTypeID": "", 
    "FailedReason": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
    "packedInCustomID": "", 
    "UpdateDateUTC": "6/06/2013 9:55:05 p.m.", 
    "PrintedByCustomerUserID": "" 
} 

Это вставляется непосредственно в базу данных SQL Server CE с помощью ExecuteNonQuery, ничего плохого в том или как его вставляют и был протестирован и использован много.

При вставке этих данных в таблицу со следующей схемой я получаю ошибку:

There was a syntax error while converting from one data type to another. [ Expression = ]

enter image description here

Я посмотрел и над данными и, кажется, нет ничего неуместны , Должен ли я преобразовывать даты или что-то еще? Все вставлено как тип NVarChar, поскольку все они являются строками.

Формат даты также в формате d/MM/yyyy h:mm:ss tt

Запрос вставки я использую:

INSERT INTO example 
(
    ItemID, 
    ConsignmentID, 
    CountryCreateDate, 
    Reference, 
    Packaging, 
    Weight, 
    WeightCubic, 
    Length, 
    Width, 
    Height, 
    seqNumber, 
    DatePrinted, 
    ad_Excess, 
    Price_Cost, 
    Price_Other, 
    Price_OtherTypeID, 
    FailedReason, 
    PackedInCustomID, 
    UpdateDateUTC, 
    PrintedByCustomerUserID 
) VALUES (
    @ItemID, 
    @ConsignmentID, 
    @CountryCreateDate, 
    @Reference, 
    @Packaging, 
    @Weight, 
    @WeightCubic, 
    @Length, 
    @Width, 
    @Height, 
    @seqNumber, 
    @DatePrinted, 
    @ad_Excess, 
    @Price_Cost, 
    @Price_Other, 
    @Price_OtherTypeID, 
    @FailedReason, 
    @PackedInCustomID, 
    @UpdateDateUTC, 
    @PrintedByCustomerUserID 
) 
+0

?? Эмм. Объяснение вашего комментария? – FabianCook

ответ

2

Вы должны изменить формат даты: попробовать 20130524 вместо 24/05/2013

SQL-сервер считает формат вашей даты неоднозначным, поскольку в некоторых странах DD/MM и другие используют MM/DD, принятые форматы перечислены здесь: Date and Time Formats. Обычно я использую «YYYYMMDD», но черты там прекрасны.

Редактировать: кроме того, тип данных NUMERIC не может принимать пустую строку. Вам нужно будет выбрать другой тип данных для полей Price_Cost и Price_Other или передать их '0' вместо пустой строки ''.

+0

Это похоже на комментарий, а затем ответ. Я попытаюсь. – FabianCook

+0

Как вы предлагаете это сделать? – FabianCook

+0

Откуда берутся данные? –

0

в SqlCeDataAdapter выберите использование команды .ToString() метод после даты-времени, как этот формат:

CONVERT(DATETIME, '" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "', 102)";