这个程序会打开几次数据库。1次还是100次      Private Sub backAddtree()
        conn = New SqlConnection(mysqlDB)
        conn.Open()
        strSQL = "Select * From T_sort"
        Adpt = New SqlDataAdapter(strSQL, conn)
        Ds = New DataSet
        Adpt.Fill(Ds, "T_sort")
        ViewState("ds") = Ds
        AddTree(0, Nothing)
        conn.Close()
    End Sub
 Private Function GetSubFid(ByVal myNodeID As Integer) As Boolean
        Dim r As Integer
        Dim row As DataRow
        Dim tmp As Boolean
        For r = 0 To Ds.Tables("t_sort").Rows.Count - 1
            row = Ds.Tables("t_sort").Rows(r)
            If myNodeID = row.Item("so_fid") Then
                tmp = False
                Exit For
            Else
                tmp = True
            End If
        Next
        Return tmp
    End Function Private sub fid()
        Dim i As Integer
        For i = 0 To 100
            Response.Write(GetSubFid(i)) '<--会不会打开100次数据库
        Next
    End Function  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码
        If Not IsPostBack Then
            backAddtree()
            fid()
        End If
    End Sub
==================随便再问一个Cache回调例子。

解决方案 »

  1.   

    只打开一次, backAddtree()这个函数调用了一次因此只打开一次,Cache回调例子在Microsoft .NET Framework SDK v1.1中有,搂主查找一下吧。
      

  2.   

    Adpt.Fill(Ds, "T_sort") 只执行一次。
    GetSubFid 方法再循环一万次,也只open一次而已
      

  3.   

    随便再问一个Cache回调例子。look this article:
    http://blog.csdn.net/chengking/archive/2005/10/03/494545.aspx
      

  4.   

    不会的。在fid 中,你101次的访问函数GetSubFid,在此函数中没有打开数据库的语句,当然不会执行打开库的操作。
      

  5.   

    只开一次,dataset把数据已经读到本地啦