asp.net分页代码,执行偶尔会出现问题,并且执行效率非常低,请求帮助改进一下。

robake 2008-06-04 11:10:01
Public Function ReadAllNews(ByVal rPage As Integer) As String
ConnectionSQL()
ds.Clear()
SQL = "Select * from [News_Table] order by Tim desc,id asc"
mySqlAdapter = New SqlDataAdapter(SQL, Conn)
mySqlAdapter.Fill(ds, "News_Table")
Dim pagecounts As Integer = ds.Tables("News_Table").Rows.Count
Dim RCount As Integer = pagecounts

If RCount = 0 Then
ReadAllNews = "未找到新闻数据。"
Exit Function
End If

Dim i As Integer = 1

Dim pagesizes As Integer = 20
Dim curpage = rPage
Dim a, b, sa, page As Integer
a = Int(pagecounts / pagesizes)
b = pagecounts / pagesizes
If a < b Then
pagecounts = a + 1
Else
pagecounts = b
End If
If curpage < 1 Or curpage > pagecounts Then
page = 1
sa = 1
Else
page = curpage
sa = (curpage - 1) * pagesizes + 1
End If
CloseSQL()
ConnectionSQL()
ds.Clear()
mySqlAdapter = New SqlDataAdapter(SQL, Conn)
mySqlAdapter.Fill(ds, sa - 1, pagesizes, "News_Table")
For i = 0 To ds.Tables("News_Table").Rows.Count - 1
If ReadAllNews = "" Then
ReadAllNews = "<div><li class='newsl'>" & i + 1 + (rPage - 1) * 20 & ". <a href='" & ds.Tables("News_Table").Rows(i).Item("html") & "' target='_blank'>" & ds.Tables("News_Table").Rows(i).Item("topic") & "</a></li><li class='newsr'>" & Year(ds.Tables("News_Table").Rows(i).Item("tim")) & "年" & Month(ds.Tables("News_Table").Rows(i).Item("tim")) & "月" & Day(ds.Tables("News_Table").Rows(i).Item("tim")) & "日 </li></div>"
Else
ReadAllNews = ReadAllNews & vbCrLf & "<div><li class='newsl'>" & i + 1 + (rPage - 1) * 20 & ". <a href='" & ds.Tables("News_Table").Rows(i).Item("html") & "' target='_blank'>" & ds.Tables("News_Table").Rows(i).Item("topic") & "</a></li><li class='newsr'>" & Year(ds.Tables("News_Table").Rows(i).Item("tim")) & "年" & Month(ds.Tables("News_Table").Rows(i).Item("tim")) & "月" & Day(ds.Tables("News_Table").Rows(i).Item("tim")) & "日 </li></div>"
End If
Next
'====分页链接
ReadAllNews = ReadAllNews & "<div>总共 " & RCount & " 条 本页 " & ds.Tables("News_Table").Rows.Count & " 条 第 " & rPage & " 页/共 " & pagecounts & " 页"

If rPage > 1 Then
ReadAllNews = ReadAllNews & vbCrLf & " <a href='?page=1'>首页</a> <a href='?page=" & rPage - 1 & "'>上一页</a>"
Else
ReadAllNews = ReadAllNews & vbCrLf & " 首页 上一页"
End If
If rPage < pagecounts Then
ReadAllNews = ReadAllNews & " <a href='?page=" & rPage + 1 & "'>下一页</a> <a href='?page=" & pagecounts & " '>末页</a> "
Else
ReadAllNews = ReadAllNews & " 下一页 末页"
End If
ReadAllNews = ReadAllNews & "</div>"
CloseSQL()
End Funct
以上是我的函数代码,分页显示有时正常,有时出现,出现的错误有:对象未引用到实例,致命的内部错误,运行超时等,我发现,只要不调用这个函数,程序运行非常正常,效率也挺好,程序的执行时间在几十毫秒到几百之间,调用了这个函数,执行时间立即要变成几千,甚至上万毫秒,根据断点检查发现,问题在mySQLAdapter.fill这个地方,上述的代码在我的程序其他函数里也有,其他的函数运行完全正常。
请指点一下。
...全文
147 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
robake 2008-06-05
  • 打赏
  • 举报
回复
非常感谢上述各位朋友的帮助,问题解决了。
46539492 2008-06-04
  • 打赏
  • 举报
回复
建议设置断点调试一下,
还有对象在使用之前建议先判断一下再使用
46539492 2008-06-04
  • 打赏
  • 举报
回复
看看这个?
http://blog.csdn.net/46539492/archive/2008/04/11/2283360.aspx
阿里路亚1984 2008-06-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wgaxl 的回复:]
用AspNetPager来实现分页,效果和功能会比较好的
[/Quote]

是的,楼主可以试一下 ~
pingchangxinnet 2008-06-04
  • 打赏
  • 举报
回复
最后写一存储过程

读取的时候只读取本页面的数据即可

可以搜索
邹建 存储过程
wgaxl 2008-06-04
  • 打赏
  • 举报
回复
哦,你搞的vb啊
wgaxl 2008-06-04
  • 打赏
  • 举报
回复
用AspNetPager来实现分页,效果和功能会比较好的
孟子E章 2008-06-04
  • 打赏
  • 举报
回复
如果一次取出来放到了DataSet里,就可以直接在这里进行循环输出了,怎么又ds.Clear读一次数据库啊?
孟子E章 2008-06-04
  • 打赏
  • 举报
回复
得到总记录数为啥要用
SQL = "Select * from [News_Table] order by Tim desc,id asc"
啊? Count("*")不是很好吗?

另外,不用的数据不要取出来,尤其是文章内容等大字段数据。

既然是sql,最好使用存储过程、。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧