2016-02-17 28 views
1

我想在MySQL數據庫上執行查詢。我已經把try命令放在一個try catch塊中,但是當查詢失敗時它仍然會拋出一個異常。我該如何防止並簡單地捕捉錯誤?如何在try catch塊中捕獲MySQL錯誤?

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() 

如果列已經存在,它拋出一個錯誤,但如果沒有,那麼一切都很好,和查詢被執行,程序繼續下去。

+0

發生在哪條線路的異常? – Nathan

回答

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 
+0

我嘗試過,但異常仍然拋出。我想我需要趕上odbc連接錯誤,但我不知道如何。 – user2721815

+0

我試過使用「Catch ex as OdbcException」,但它永遠不會達到Catch代碼行。執行行拋出異常。 – user2721815

+0

@ user2721815看到我的las編輯 – meda