我的原意是用cache来保存视图。但是出错。如果内存没有视图则进行数据库连接。否则直接从cache获得数据库视图
--------------------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim objdv As DataView
        Dim strtext As String
        objdv = Cache("cachedview")
        If objdv Is Nothing Then
            Dim objconn As sqlconnection
            Dim objcmd As sqldataadapter
            Dim objds As dataset
            Dim strsql, strdsn As String
            strdsn = ConfigurationSettings.AppSettings("connstring").ToString
            objconn = New sqlconnection(strdsn)
            strsql = "select * from employ"
            objcmd = New sqldataadapter(strsql, objconn)
            objds = New dataset
            objcmd.Fill(objds, "employ")
//////C:\Inetpub\wwwroot\WebApplication1\cachedata.aspx.vb(44): 类型“WebApplication1.dataset”的值无法转换为“System.Data.DataSet”。            objdv = New DataView
            objdv = objds.tables(0)
/////C:\Inetpub\wwwroot\WebApplication1\cachedata.aspx.vb(46): “tables”不是“WebApplication1.dataset”的成员。            Cache("cacheview") = objdv
            strtext = "从数据库取出"
        Else
            strtext = "从cache对象取出"        End If
        lblshow.Text = strtext
        datagrid1.DataSource = objdv
        datagrid1.DataBind()
    End Sub

解决方案 »

  1.   

    视图是指向的datatable,所以你在cache中应该存datatable,或dataset
      

  2.   

    objcmd.Fill(objds, "employ")
    //////C:\Inetpub\wwwroot\WebApplication1\cachedata.aspx.vb(44): 类型“WebApplication1.dataset”的值无法转换为“System.Data.DataSet”。        objdv = objds.tables(0)
    /////C:\Inetpub\wwwroot\WebApplication1\cachedata.aspx.vb(46): “tables”不是“WebApplication1.dataset”的成员。
    就是这两句出错。
      

  3.   

    Imports System.data
    Imports System.data.sqlclient
    我引入的空间是这个。请问对不对。
      

  4.   


    〉〉 objdv = objds.tables(0)
    /////C:\Inetpub\wwwroot\WebApplication1\cachedata.aspx.vb(46): “tables”不是“WebApplication1.dataset”的成员。改称 objdv = objds.Tables(0).DefaultView
      

  5.   

    〉〉 objcmd.Fill(objds, "employ")
    //////C:\Inetpub\wwwroot\WebApplication1\cachedata.aspx.vb(44): 类型“WebApplication1.dataset”的值无法转换为“System.Data.DataSet”。要引入命名空间:Imports System.Data
    Imports System.Data.SqlClient
      

  6.   

    为啥我把vb和aspx不分开来这样写就对了啊?郁闷
    ------------------------------------------------
    <%@import namespace="system.data"%>
    <%@import namespace="system.data.sqlclient"%>
    <script language=vb runat=server>
     sub page_load(sender as object,e as eventargs)
       Dim objDV As DataView
       dim strtext as string
       objdv=cache("cachedview")
      if objdv is nothing then
       dim objconn as sqlconnection
       dim objcomm as sqldataadapter
       dim objds as dataset   dim strsql,strdsn as string
       strdsn=configurationsettings.appsettings("connectionstring1")
       objconn=new sqlconnection(strdsn)
       strsql="select * from employ"
       objcomm=new sqldataadapter(strsql,objconn)
       objds=new dataset() 
       objcomm.fill(objds,"employ")
       objdv=new dataview(objds.tables(0))
       cache("cachedview")=objdv
       strtext="in access"
      else
        strtext="cache"
      end if
        lblshow.text=strtext
        datagrid1.datasource=objdv
        datagrid1.databind()
       
     end sub
    </script>
    <html>
      <head>
        <title>datacache</title>
      
      </head>
      <body>
       <asp:Label ID="lblshow" Runat=server/>
       <asp:DataGrid ID="datagrid1" Runat=server/>
     
      </body>
    </html>