为什么我的if语句没有被正确评估?

Kis*_*asi 0 mysql vb.net

晚上好,

我正在使用以下代码截断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)

Fra*_*mas 5

根据此文档http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html 如果数据库版本大于5.somthing并且表格,则truncate命令可能无法始终返回受影响的行没有外键约束.如果你有FK然后为每一行处理一个删除,你得到你正在寻找的返回值,但如果你没有,那么mysql将丢弃并重新添加表(这要快得多),这意味着它有没有想法有多少记录受到影响.