我试图通过vb.net获取更新声明。
最初,我的代码如下:
Dim updateSQL = " update mytable set doc_num = @Code where inv_num = @inv "
Using connection As New SqlConnection(getConnectionString())
Using command As New SqlCommand(updateSQL, connection)
With (command.Parameters)
.Add(New SqlParameter("@inv", System.Data.SqlDbType.Int)).Value = inv
.Add(New SqlParameter("@Code", System.Data.SqlDbType.NVarChar)).Value = Code
rowAffected = command.ExecuteNonQuery()
End With
connection.Close()
我得到一个错误,说必须声明标量变量“@Code”。之后在Stackoverflow上进行了一些搜索(参见Must Declare Scalar Variable),我将其更改为以下内容,并且工作正常。
Using connection As New SqlConnection(getConnectionString())
Using command As New SqlCommand(updateSQL, connection)
connection.Open()
command.Parameters.Add("@inv", System.Data.SqlDbType.Int)
command.Parameters("@Inv").Value = CType(inv, Integer)
command.Parameters.AddWithValue("@Code", Code)
rowAffected = command.ExecuteNonQuery()
End Using
connection.Close()
End Using
有人请解释为什么第一个案例不起作用?这是否意味着需要使用AddWithValue更新所有字符串值?