0

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

{
    "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的,它的插入方式或插入方式没有任何问题,并且已经过大量测试和使用。

将此数据插入具有以下架构的表中时,出现错误:

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

在此处输入图像描述

我一遍又一遍地查看数据,似乎没有什么不妥之处。我应该转换日期还是什么?一切都作为类型插入,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
)
4

2 回答 2

3

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

SQL 服务器认为您的日期格式不明确,因为有些国家/地区使用 DD/MM 而其他国家/地区使用 MM/DD,此处列出了可接受的格式:日期和时间格式。我通常使用“YYYYMMDD”,但破折号在那里很好。

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

于 2013-06-10T23:40:01.607 回答
0

在 SqlCeDataAdapter 选择命令中,在 datetime 之后使用 .ToString() 方法,如下格式:

CONVERT(DATETIME, '" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "', 102)";
于 2016-05-24T17:34:40.050 回答