我在ASP.NET(VB)开发的项目添加了一个Module,里面写了个ExeSQL,负责执行SQL语句的函数
要如何优化呢?这种通用的函数是放在Module中好,还是放在Class中呀?
    Public Function ExeSQL(ByVal strSQL As String) As DataSet
        Dim TmpDs As DataSet
        Dim Da As SqlDataAdapter
        Dim Cn As SqlConnection        If strSQL.Trim = "" Then Exit Function
        Try
            Cn = New SqlConnection(CnStr)
            Cn.Open()
            Da = New SqlDataAdapter(strSQL, Cn)
            TmpDs = New DataSet
            Da.Fill(TmpDs)            If TmpDs Is Nothing Then
                Return Nothing
            Else
                Return TmpDs
            End If
        Catch ex As Exception
            AppException.LogError("ExeSQL:" & strSQL & "------" & ex.Message)
            Return Nothing
        Finally
            Cn.Close()
            Cn.Dispose()
            Cn = Nothing
            Da.Dispose()
            Da = Nothing
            TmpDs.Dispose()
            TmpDs = Nothing
        End Try
    End Function
如果我不在Finally中加入如下语句,.NET会不会在执行这个ExeSQL后,把里面的DA,CN对象都释放干净?

解决方案 »

  1.   

    应该说第一个问题是被问得比较多的,我们一般是通过dll调用的方式,有时候也放在module中,具体放在哪里好我也说不上来。
    第二个问题中在finally内cn.close()肯定是要的,别的释放资源的一般也需要,.net的资源释放只有在页面迁移的时候才会发生,而你这里是一个通用类,不能保证及时的页面迁移。
      

  2.   

    如果不是很多类的话,直接放在CLASS比较好。。