有没有人能告诉我为什么这个不起作用?如果我将测试函数放到它后面的代码中,它会工作得很好。如果我把它放到测试类中,数据总是什么都不是。
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
ASPxGridView1.DataSource = TestClass.Test()
ASPxGridView1.DataBind()
ASPxLabel1.Text = Now
End Sub
End Class
Public Class TestClass
Public Shared Function Test() As DataTable
Test = DirectCast(HttpContext.Current.Cache("Test"), DataTable)
If Test Is Nothing Then
Dim sql As String = "SELECT field1,field2,field3 FROM test "
Using conn As New SqlConnection(Materials.Conn)
Using cmd As New SqlCommand(sql, conn)
Dim dep As New SqlCacheDependency(cmd)
Test = New DataTable
conn.Open()
Test.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection))
HttpContext.Current.Cache.Insert("Test", Test, dep, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(24))
End Using
End Using
End If
End Function
End Class发布于 2012-01-31 01:06:48
您必须返回一些DataTable值!
更新:我添加了SqlDependency.Start(connstring),但没有这一行,您应该会看到错误。这表明Test不是Nothing
Public Class TestClass
Public Shared Function Test() As DataTable
Test = DirectCast(HttpContext.Current.Cache("Test"), DataTable)
If Test Is Nothing Then
Dim sql As String = "SELECT * from categories"
Dim constring As String = ConfigurationManager.ConnectionStrings("HalloweenConnectionString").ConnectionString
Using conn As New SqlConnection(constring)
Using cmd As New SqlCommand(sql, conn)
Dim dep As New SqlCacheDependency(cmd)
SqlDependency.Start(constring)
Test = New DataTable
conn.Open()
Test.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection))
HttpContext.Current.Cache.Insert("Test", Test, dep, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(24))
End Using
End Using
End If
End Function结束类
发布于 2012-01-31 23:08:15
这就是我最终怎么做的。我仍然不清楚为什么我必须通过sqlcachedepency。
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim dep As SqlCacheDependency = Nothing
ASPxGridView1.DataSource = TestClass.Test(dep)
ASPxGridView1.DataBind()
ASPxLabel1.Text = Now
End Sub
End Class
Public Class TestClass
Public Shared Function Test(ByRef dep As SqlCacheDependency) As DataTable
Test = DirectCast(HttpRuntime.Cache("Test"), DataTable)
If Test Is Nothing Then
Dim sql As String = "SELECT field1,field2,field3 FROM test "
Using conn As New SqlConnection(Materials.Conn)
Using cmd As New SqlCommand(sql, conn)
dep = New SqlCacheDependency(cmd)
Test = New DataTable
conn.Open()
Test.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection))
HttpRuntime.Cache.Insert("Test", Test, dep, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(24))
End Using
End Using
End If
End Function
End Classhttps://stackoverflow.com/questions/9067384
复制相似问题