如何在try catch块中捕获MySQL错误?

时间:2016-02-17 15:56:25

标签: mysql vb.net try-catch

我正在尝试在MySQL数据库上执行查询。我已将execute命令放在try catch块中,但在查询失败时仍会抛出异常。如何防止这种情况并简单地捕获错误?

Dim db_connection As String = my_connection_string
Dim MyConn As OdbcConnection  
MyConn = New OdbcConnection(db_connection)
Dim MyCommand As New OdbcCommand()
Dim myReader As OdbcDataReader = Nothing
MyCommand.Connection = MyConn
MyConn.Open()

query = "Alter table Table1 ADD COLUMN `col_2` VARCHAR(50) AFTER `col_1`"
MyCommand.CommandText = query
try
     myReader = MyCommand.ExecuteReader()
catch ex as Exception
     output(ex.tostring)
end try
myReader.Close()

如果列已经存在,则会抛出错误,但如果没有,那么一切都很好,查询将被执行并且程序继续运行。

1 个答案:

答案 0 :(得分:0)

如果要捕获异常,则应该捕获查询的整个代码,因为例如,连接也可能失败。

Dim db_connection As String = my_connection_string
Dim MyConn As OdbcConnection  
Dim MyCommand As New OdbcCommand()

try
     MyConn = New OdbcConnection(db_connection)
     MyCommand.Connection = MyConn
     MyConn.Open()
     query = "Alter table Table1 ADD COLUMN `col_2` VARCHAR(50) AFTER `col_1`"
     MyCommand.CommandText = query
     MyCommand.ExecuteNonQuery()
catch ex as Exception
     output(ex.tostring)
end try

编辑:

Try
    Using connection As New OdbcConnection(my_connection_string)
        query = "Alter table Table1 ADD COLUMN `col_2` VARCHAR(50) AFTER `col_1`"
        Using command As New OdbcCommand(query, connection)
            connection.Open()
            command.ExecuteNonQuery()
        End Using   
    End Using
Catch ex As Exception
    Console.WriteLine(ex.Message)
End Try

修改

Try
    'code here
Catch e As OdbcException
    Console.WriteLine(ex.Message)
Catch ex As Exception
    Console.WriteLine(ex.Message)
End Try