以下方法适合使用SQL
方法1
Using conn As New SqlConnection("....")
conn.Open()
'/to do
End Using
方法2
Try
dim conn as new sqlconnection =("....")
conn.open()
'/to do
Catch
MsgBox("ex.message")
Finally
conn.close()
End Try
答案 0 :(得分:1)
方法1更常见,因为方法2混合了数据访问(打开数据库连接)和表示(向用户显示消息)。
将应用程序分为演示文稿,业务逻辑和数据访问层更为常见。 E.g。
... Presentation code
Try
BusinessLogic.SaveData(...)
Catch
MsgBox...
End Try
... BusinessLogic tier
Public Sub SaveData(...)
DataAccess.SaveData(...)
End Sub
... Data access tier
Public Sub SaveData(...)
Using conn As New SqlConnection("....")
...
End Using
End Sub
另请注意,如果可以处理异常,通常只应捕获异常。因此,业务逻辑和数据访问层应该很少使用Catch块 - 它们只是让Exceptions传播到表示层。表示层可能能够处理异常(例如向用户显示消息并让它们重试),因此可能包含Catch块。
答案 1 :(得分:0)
我建议您在尝试调用SqlConnection对象的Open方法时始终使用Try块,并在完成后显式调用Close方法。显然,需要在连接对象在方法结束时超出范围或使用块(如果它确实在本地声明)之前完成。
Using块的使用取决于SqlConnection对象所需的范围。
此外,我会在另一个Try块中调用Close方法,而不是在Finally部分中调用。
你正在调用字符串文字" ex.message"这将显示的内容而不是错误消息。
Using conn As New SqlConnection("....")
Try
conn.open()
Catch ex As Exception
MessageBox.Show(ex.Message)
Return
Catch SqlEx As SqlException
MessageBox.Show(SqlEx.Message)
Return
End Try
'do data processing here using the conn object etc
Try
conn.close()
Catch ex As Exception
Catch SqlEx As SqlException
End Try
End Using