【发布时间】:2016-01-03 15:18:06
【问题描述】:
我已经编写了下面的代码来从多个数据库表中删除记录,但是它没有删除任何记录并且也没有显示任何错误!有人可以帮忙吗?
Private Sub btndelete_Click(sender As Object, e As EventArgs) Handles btndelete.Click
Try
cmd = New SqlCommand("IF EXISTS(SELECT * FROM book WHERE isbn = @isbn) " _
& " BEGIN " _
& " delete from published_by where isbn = @isbn; " _
& " delete from return where isbn = @isbn; " _
& " delete from issue where isbn = @isbn; " _
& " delete from book where isbn = @isbn;" _
& " SELECT 1; " _
& " END " _
& " ELSE SELECT 0", cn)
cmd.Parameters.Add(New SqlParameter("@isbn", SqlDbType.VarChar, 13) _
With {.Value = isbn})
If cn.State = ConnectionState.Closed Then
cn.Open()
End If
Dim returnValue As Integer = CInt(cmd.ExecuteScalar())
If returnValue = 1 Then
lblAlert.Text = ""
lblInfo.Text = "Deleted"
Else
lblAlert.Text = "No Record Available"
lblInfo.Text = ""
End If
Catch sqlEx As SqlException
Select sqlEx.Number
Case -1, 2, 53
MessageBox.Show("Connection Failed to Database")
End Select
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End If
End Sub
【问题讨论】:
-
它会改变任何用户界面吗?例如,您将一些标签文本设置为“已删除”或“无可用记录”,是否会发生这种情况?
-
您说您正在使用存储过程。存储过程存在于 SQL Server 中,您可以从代码中按名称调用它们。为什么代码里有存储过程的定义(全SQL)?
-
我认为 DELETE 和 SELECT 语句后的分号可能是问题所在。你试过没有这些的代码吗?
-
@YacoubMassad 不,它不显示标签文本,即“已删除”
-
尝试将方括号放在“return”周围,如下所示:
delete from [return]
标签: sql-server vb.net stored-procedures