Vb.net 从字符串到类型Double的转换无效

Vb.net 从字符串到类型Double的转换无效,vb.net,Vb.net,我想向具有以前值的字段添加值。 我的代码是: Dim Credits As Integer = Int64.Parse(FinalPay.ToString) Dim cmd As New SqlCommand("Update Users Set Credit=Credit+" + Credits + " Where Email ='" + UserEmail + "'", con) 但我得到一个错误,它说: “从字符串到双精度的转换无效”

我想向具有以前值的字段添加值。 我的代码是:

Dim Credits As Integer = Int64.Parse(FinalPay.ToString)
Dim cmd As New SqlCommand("Update Users Set Credit=Credit+" + Credits + 
                          " Where Email ='" + UserEmail + "'", con)
但我得到一个错误,它说:

“从字符串到双精度的转换无效”


当您想在vb中压缩字符串时,您想使用“&”操作符,如果您使用SQL参数,它应该可以正常工作:

Dim cmd As New SqlCommand("UPDATE Users SET Credit = Credit + @Credits Where Email = @Email", con)
cmd.Parameters.Add(New SqlParameter With {.ParameterName = "@Credits", .SqlDbType = SqlDbType.Int, .Value = finalPay})
cmd.Parameters.Add(New SqlParameter With {.ParameterName = "@Email", .SqlDbType = SqlDbType.NVarChar, .Size = 256, .Value = userEmail})

调整每个参数类型(和大小)以匹配数据库中的声明。

您正在使用字符串创建sql命令。假设credits=100请求将如下所示:Update Users Set Credit=Credit+100,其中Email=”mail@mail.com“@sapi不能与选项Strict On一起使用,应始终使用该选项。(除了一些例外情况,这不是。)请不要鼓励人们使用字符串连接来创建sql查询。使用
SqlParameter
将消除OP的问题。
Dim Credits As Integer=Int64.Parse(FinalPay.ToString)
将不会编译,如果
选项Strict
设置为
On
。如果
FinalPay
的值超过Integer(Int32)类型的最大值,则在运行时引发异常
Dim cmd As New SqlCommand("UPDATE Users SET Credit = Credit + @Credits Where Email = @Email", con)
cmd.Parameters.Add(New SqlParameter With {.ParameterName = "@Credits", .SqlDbType = SqlDbType.Int, .Value = finalPay})
cmd.Parameters.Add(New SqlParameter With {.ParameterName = "@Email", .SqlDbType = SqlDbType.NVarChar, .Size = 256, .Value = userEmail})