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

转换数据类型SQL Server CE时出错,sql,sql-server-ce,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"

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

{
    "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数据库中的,无论是插入方式还是插入方式都没有问题,并且经过了大量测试和使用

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

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

我看了一遍又一遍数据,似乎没有什么不对劲的地方。我应该转换日期还是什么?所有内容都以类型
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
)

您需要更改日期格式: 尝试20130524而不是2013年5月24日

SQL server认为您的日期所采用的格式不明确,因为某些国家/地区使用DD/MM,而其他国家/地区使用MM/DD,此处列出了可接受的格式:。 我通常使用'YYYYMMDD',但是破折号在那里很好


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

您需要更改日期格式: 尝试20130524而不是2013年5月24日

SQL server认为您的日期所采用的格式不明确,因为某些国家/地区使用DD/MM,而其他国家/地区使用MM/DD,此处列出了可接受的格式:。 我通常使用'YYYYMMDD',但是破折号在那里很好


编辑:此外,数字数据类型不能接受空白字符串。您必须为Price\u Cost和Price\u其他字段选择不同的数据类型,或者为它们提供一个“0”而不是空字符串“”。

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

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

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

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

?? 嗯。解释你的评论???嗯。解释你的评论?这看起来更像是一个评论,而不是一个答案。我会试试。你建议怎么做?数据从哪里来?服务器端。上面是它返回的json。我应该能弄明白。这是一条毫无帮助的错误信息,是吗?您能否通过一次将测试值插入一个字段来隔离导致失败的字段?这似乎更像是一个注释,而不是答案。我会试试。你建议怎么做?数据从哪里来?服务器端。上面是它返回的json。我应该能弄明白。这是一条毫无帮助的错误信息,是吗?您能否通过将测试值一次插入一个字段来隔离导致故障的字段?