转换数据类型SQL Server CE时出错

时间:2013-06-10 23:24:39

标签: sql sql-server-ce

我有一个包含以下数据的对象:

{
    "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": ""
}

使用ExecuteNonQuery将其直接插入到SQL Server CE数据库中,没有任何问题或插入方式,并且已经过大量测试和使用。

将此数据插入具有以下架构的表时,我收到错误:

  

从一种数据类型转换为另一种数据类型时出现语法错误。 [表达式=]

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
)

2 个答案:

答案 0 :(得分:2)

您需要更改日期格式: 尝试20130524而不是24/05/2013

SQL服务器认为您的日期格式不明确,因为某些国家/地区执行DD / MM而其他国家/地区执行MM / DD,此处列出了可接受的格式:Date and Time Formats。 我通常选择'YYYYMMDD',但是破折号在那里很好。

编辑:此外,NUMERIC数据类型不能接受空白字符串。您必须为Price_Cost和Price_Other字段选择不同的数据类型,或者为它们提供“0”而不是空字符串''。

答案 1 :(得分:0)

在SqlCeDataAdapter中选择命令使用.ToString()方法在datetime之后像这样的格式:

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