您好我试图将c#中的double值添加到Table中的sql float字段。
KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil, completionHandler: { image, error, cacheType, imageURL in
print(image)
})
但是当实际保存到db时会保存错误的数字。像12,3这样的东西使12.3 .....所以我的问题是如何防止这种情况发生?所以当我键入12,3时,它会向表中写入12,3。任何建议都很棒thx
对不起我的英语而不是母语
编辑:关于我现在的SQL注入,但没有这个接口。EDIT2:数据库中的数据类型为float。
EDIT3:5,1,8,9,0,51,4,59这里是输出的一个例子。 Insted 5.1它说5,1并将其视为两个字段。当我尝试运行它时,我得到一个例外。
答案 0 :(得分:3)
参数就是你想要的......这样做就是邀请SQL注入攻击。
以下是它的基本要点:
SELECT * FROM Artists where ArtistId IN (
SELECT [RelatedArtistId]
FROM [dbo].[RelatedArtists]
WHERE artistId = 740
)
这不仅会阻止SQL注入,还会将应用于参数的对象属性/值的类型映射到正确的cmd.CommantText = "INSERT INTO Table (Field1, Field2) VALUES(@Param1, @Param2);";
cmd.Parameters.AddWithValue("@Param1", yourObj.Property1);
cmd.Parameters.AddWithValue("@Param2", someMethodToReturnValue(someParam));
。
无论是否缺少界面,使用参数并避免注入攻击仍然是最佳做法(如果这些值不是,那么将来就不会有这样的事情。 #39; t在其他地方提供,或者如果一些未经干预的开发人员复制你的代码怎么办?没有理由在参数化查询中使用字符串连接,并且每个理由都不...而且当然是一个额外的加号是正确的类型映射!)
上次修改:SqlDbType
无法处理可能的空值,因此您可以编写一个快速扩展方法,例如AddWithValue
:
AddWithNullableValue