晚上好,
我正在使用以下代码截断MySQL数据库中的表.据我所知,查询运行正常,表被截断.但是,正在使用我用于测试行是否受到影响的if语句在Else语句上进行评估.
那么为什么数据库中的表被截断 - 正如预期的那样 - 但正在评估Else语句 - 好像没有行受到影响?我究竟做错了什么?
这是代码:
Public Sub purgeCC()
Dim dbAdapter As New MySqlDataAdapter
Dim dbCmd As New MySqlCommand
Dim ConnectionString As String = String.Format("Server={0};Port={1};Uid={2};Password={3};Database=accounting", FormLogin.ComboBoxServerIP.SelectedItem, My.Settings.DB_Port, My.Settings.DB_UserID, My.Settings.DB_Password)
Dim myQuery As String = "TRUNCATE TABLE cc_master"
Using dbConn As New MySqlConnection(ConnectionString)
Using dbComm As New MySqlCommand()
With dbComm
.Connection = dbConn
.CommandType = CommandType.Text
.CommandText = myQuery
End With
Try
Dim affectedRow As Integer
dbConn.Open()
affectedRow = dbComm.ExecuteNonQuery()
If affectedRow > 0 Then
MsgBox("Credit Card Master table has been successfully purged!", MsgBoxStyle.Information, "DATABASE PURGED!")
Else
MsgBox("Credit Card Master table was not purged!", MsgBoxStyle.Critical, "ATTENTION")
End If
Catch ex As Exception
MessageBox.Show("A DATABASE ERROR HAS OCCURED" & vbCrLf & vbCrLf & ex.Message & vbCrLf & _
vbCrLf + "Please report this to the IT/Systems Helpdesk at Ext 131.")
End Try
dbConn.Close()
dbComm.Dispose()
End Using
End Using
End Sub
Run Code Online (Sandbox Code Playgroud)
根据此文档http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html 如果数据库版本大于5.somthing并且表格,则truncate命令可能无法始终返回受影响的行没有外键约束.如果你有FK然后为每一行处理一个删除,你得到你正在寻找的返回值,但如果你没有,那么mysql将丢弃并重新添加表(这要快得多),这意味着它有没有想法有多少记录受到影响.