【发布时间】:2019-12-13 17:07:18
【问题描述】:
这就是我设置命令的方式。它在第一个参数 UpdateType 处停止。此代码正在从 VB.NET 2008 版本更新。
Dim db As New DB()
Dim cmd As SqlCommand = New SqlCommand()
'Put into an object, and use AddWithValue due to Parameters.Add being deprecated.
Dim UpdateType As String = "PARAMETERS"
If IsNewJob Then
cmd.CommandText = "sp_MB_AddJob"
Else
cmd.CommandText = "sp_MB_UpdateJob"
cmd.Parameters.AddWithValue("@UpdateType", SqlDbType.NVarChar).Value = UpdateType
cmd.Parameters.AddWithValue("@OrigJobName", OrigJobName.ToString)
End If
cmd.Parameters.AddWithValue("@UserID", CInt(Utils.GetLoggedInUserID))
cmd.Parameters.AddWithValue("@ProjectName", ProjectName.ToString)
【问题讨论】:
-
Add(String, Object)已弃用,而不是Add(String, SqlDbType)。将Parameters.Add用于您的@UpdateType参数(如果它们不被视为对象,则使用其他参数)。 SqlParameterCollection.Add Method。AddWithValue不支持提供数据类型。 -
您也没有将 CommandType 设置为 StoredProcedure。而且您确实应该使用与 sp_ 不同的前缀,或者甚至完全不使用前缀。 sqlperformance.com/2012/10/t-sql-queries/sp_prefix
-
让我们更清楚一点 - 不要使用addwithvalue
-
你的一个字符串可能什么都不是。如果 db 字段允许 null,则在您的字符串为空时使用 SqlString.Null。
-
这里的
IsNewJob是什么,没有定义。
标签: sql-server vb.net sqlcommand