应该使用using / end using或手动关闭sqlConnection

时间:2014-05-13 06:01:04

标签: vb.net sqlconnection using-statement

以下方法适合使用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

2 个答案:

答案 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