我有一个包含以下数据的对象:
{
"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
)
答案 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)";