我无法将数据插入数据库。我使用以下数据模型在visualstudio上创建了一个webapi
public long ProductId { get; set; }
public string ProductName { get; set; }
public double Price { get; set; }
public string Url { get; set; }
我正在使用postman测试以下post请求
{
"ProductID": null,
"ProductName": "ProductA",
"Price": 100.1,
"Url":"https://productA.com"
}
调试时,我得到 error converting data type varchar to float
. 这可以在下图中看到。我不知道如何解决这个问题,我想问题出在第74行
我通过运行以下查询创建了数据库
CREATE TABLE dbo.ProductInfo
(
ProductID bigint IDENTITY(1,1) NOT NULL,
ProductName varchar(1000),
Price float,
Url varchar (1000)
)
1条答案
按热度按时间ny6fqffe1#
你没有使用参数。您只需将变量插入字符串中。
在您的值中,实际上是将其作为varchar插入,因为您通过
这将导致实际的查询字符串
所以SQLServer现在尝试通过将varchar转换为float来为您转换这些值。它应该还能做到。
你得到的错误是它不能这样做。我注意到您还插入了prod.price,而不是var price变量。你确定产品价格格式正确吗?
因为屏幕上显示的是,由于自动铸造,var价格应该有效。我猜prod.price可能是逗号分隔的十进制而不是点分隔的。这将导致SQLServer抛出错误。
显示错误的sql server端示例:
或者简单地对查询使用适当的sql参数化。而不是将所有内容都包含在一个字符串中(像这样注入sql总是很有趣的)。
编辑:
因此,测试了应用程序中的转换。在一个简单的c#控制台应用程序中,使用以逗号分隔的小数作为约定的区域设置/区域性,在将double“添加”到字符串时,它会自动转换为逗号分隔。
示例代码:
价值输出:
双倍值:10,1。