我有一个SQL StoredProcedure,可以按预期在SSMS中执行两个INSERT INTO
操作。
在我的VB.NET应用程序中执行此SP时,它正在执行(SqlException
块中没有Try
抛出)但不执行INSERT INTO
命令。
这个应用程序使用了许多可以正常工作的SP。
代码如下:
Using (ParentMDI.dbCon)
Dim sqlcmd As New SqlCommand("hyd_top_level_isr")
With sqlcmd
.CommandType = CommandType.StoredProcedure
.Parameters.AddWithValue("@part_num", part_num)
.Parameters.AddWithValue("@issue", issue)
End With
Try
sql.ExecuteNonQuery()
Catch ex As SqlException
If DialogResult.Yes = MessageBox.Show("Error inserting top-level ISR." & vbCrLf & vbCrLf & "Send Error Report?", "Workflow Error", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) Then
ParentMDI.emailerrorstring = "Stored Procedure: hyd_top_level_isr"
ParentMDI.emailerrormessage = ex.Message
ParentMDI.ErrorEmail()
End If
End Try
End Using
澄清;
我在ExecuteNonQuery()
之前插入了断点。 sub确实执行ExecuteNonQuery()
,并且传递的参数将填充正确的值。
我还在SP中插入RETURN
以返回SCOPE_IDENTITY()
。这会返回一个空字符串(不是NULL
,正如我所料)。
如果您有任何需要更多信息,请告诉我们。 我将非常感谢任何能够教育我出错的人!
(这是我第一次寻求帮助,请善待!):)
编辑: 对不起大家。我似乎错误地引导你。上面粘贴的代码是我尝试各种尝试解决此问题的尝试。我现在发布的内容就是我应该首先发布的内容。结果相同。很抱歉这个混乱,感谢您迄今为止的尝试......
Dim sqlcmd As New SqlCommand("hyd_top_level_isr", ParentMDI.dbCon)
With sqlcmd
.CommandType = CommandType.StoredProcedure
.Parameters.AddWithValue("@part_num", part_num)
.Parameters.AddWithValue("@issue", issue)
End With
Try
sqlcmd.ExecuteNonQuery()
Catch ex As SqlException
If DialogResult.Yes = MessageBox.Show("Error inserting top-level ISR." & vbCrLf & vbCrLf & "Send Error Report?", "Workflow Error", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) Then
ParentMDI.emailerrorstring = "Stored Procedure: hyd_top_level_isr"
ParentMDI.emailerrormessage = ex.Message
ParentMDI.ErrorEmail()
End If
End Try
答案 0 :(得分:0)
除了@Zohar Peled的评论之外,我认为你应该设置sqlCmd的连接并使用sqlCmd.ExecuteNonQuery。下面你还应该使用本地sqlConnection。
Using sqlcmd As New SqlCommand("hyd_top_level_isr", ParentMDI.dbCon)
With sqlcmd
.CommandType = CommandType.StoredProcedure
.Parameters.AddWithValue("@part_num", part_num)
.Parameters.AddWithValue("@issue", issue)
End With
Try
sqlCmd.ExecuteNonQuery()
Catch ex As SqlException
'' Handle exception here
End Try
End Using
答案 1 :(得分:0)
首先,我认为在SQLCommand中你应该传递SQL连接,如:
Dim sqlcmd As New SqlCommand("hyd_top_level_isr", ParentMDI.dbCon)
其次,您不是运行sqlcmd而是运行sql.executenonquery。
第三,executenonquery是一个整数。如果你变暗一个变量:
Dim result = sqlcmd.ExecuteNonQuery()
你得到了什么?