Sql server 存储价格-如何停止舍入?
我试图存储一个价格,但它存储它的便士总是向上或向下取整。如何停止该操作,使其在小数点后存储实际值?非常感谢 VB代码Sql server 存储价格-如何停止舍入?,sql-server,vb.net,Sql Server,Vb.net,我试图存储一个价格,但它存储它的便士总是向上或向下取整。如何停止该操作,使其在小数点后存储实际值?非常感谢 VB代码 Public Sub UpdateItemBuyPrice(ByVal fileID As Integer, ByVal BuyPrice As Decimal) Dim DBConnect As New DBConn Using db As DbConnection = DBConnect.Conn("DBConnectionString")
Public Sub UpdateItemBuyPrice(ByVal fileID As Integer, ByVal BuyPrice As Decimal)
Dim DBConnect As New DBConn
Using db As DbConnection = DBConnect.Conn("DBConnectionString")
Dim cmd As SqlCommand = DBConnect.Command(db, "UpdateItemBuyPrice")
cmd.Parameters.Add(New SqlParameter("fileID", SqlDbType.Int, ParameterDirection.Input)).Value = fileID
cmd.Parameters.Add(New SqlParameter("BuyPrice", SqlDbType.Decimal, ParameterDirection.Input)).Value = BuyPrice
db.Open()
cmd.ExecuteNonQuery()
cmd.Dispose()
cmd = Nothing
db.Dispose()
db.Close()
End Using
End Sub
MS SQL
PROCEDURE [ocbUser].[UpdateItemBuyPrice]
@fileID integer,
@BuyPrice decimal
AS
BEGIN
UPDATE [tblItems]
SET [BuyPrice] = @BuyPrice
WHERE [fileID] = @fileID
结束指定精度和刻度,例如十进制(18,2),它可以处理成本而无需四舍五入
**Decimal (p,s)**
精确数值,精度p,标度s
示例:decimal(5,2)是一个小数点前有3位,小数点后有2位的数字这可能会有所帮助:您必须添加精度,但我不确定默认精度是多少。很高兴看到您使用和
参数实现了。作为旁注,使用
的美妙之处在于,您不需要处理对象。使用SqlCommand
实现,然后可以删除cmd.Dispose()
,cmd=Nothing
,db.Dispose()
和db.Close()
。使用
块退出将处理对象,对于SqlConnection
它也将关闭连接。@Bugs-顺便说一句,您确定需要处理SqlCommand吗?它不只是内存,因此可以进行垃圾收集吗?@peterG个人认为,如果一个对象实现了IDisposable
,我会使用块将其包装在中。对于SqlCommand
,我认为这并不像您所说的那样绝对必要。对我来说,这是一种习惯。您还可以使用,
来实现一个,使用
块<代码>使用db作为DbConnection=DBConnect.Conn(“DBConnectionString”),cmd作为SqlCommand=DBConnect.Command(db,“UpdateItemBuyPrice”)。。。结束使用
,以便更容易阅读。@Bugs有趣-谢谢。在PimpTech的评论中还发现了前进链接中的讨论。围绕这个问题的争议似乎比我想象的要多!Oops是的,它正在工作:-)我将列定义为buyPrice(10,2),但忘记在sql代码中添加(10,2)位。非常感谢。