关于网页连接数据库设计(SQL+ASP+C#)

Falleyes 2013-09-19 03:35:30
现在有一个网页,显示很多篇文章的题目列表,但是一页肯定无法显示很多文章题目,所以在一堆题目列表下有第n页/总m页。题目列表我用了固定数目的LinkButton服务器控件,text属性用于显示题目。
现在的问题在于,数据库表的列参数应该怎样设置,然后在打开页面加载时显示第一页,总共n页,在本页显示固定数目的题目列表,然后通过前一页,后一页来展示所有数据库文章题目(全部要按照时间顺序排列,datetime我已经绑定)。再由LinkButton控件的点击事件,传一个参数在另一个页面显示文章。
我想了好久都没有好的解决方案,希望能够得到帮助!很紧急!
...全文
80 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Landa_Jimmy 2013-09-19
  • 打赏
  • 举报
回复
数据库表这样设计: 1.id 主键 2.Title 标题 3.Content 内容 . . 其他的像作者,出版社等等就不列举了。这就是表结构。 然后在你的页面上显示的是文章的标题,你点击标题的时候根据Id去找文章的内容,内容是一个页面, 查询语句是select title,content from 表 where id='你传进去的值'
Falleyes 2013-09-19
  • 打赏
  • 举报
回复
引用 1 楼 u012173239 的回复:
给你一个分页存储过程,只需要传入传入参数就可以了。。。。。。
if OBJECT_ID('sp_paging_Custom2005','P') is not null drop proc sp_paging_Custom2005
go
Create proc sp_paging_Custom2005
@tbname varchar(128),			--*表名称			
@PageCurrent int,				--显示页码(默认)
@PageSize int,					--每页显示条数(默认)
@FieldShow varchar(1024),		--需要查询字段(默认查询全部字段)
@FieldOrder varchar(1024),		--排序
@WhereString varchar(1024),		--查询条件
@RecordCount int output			--输出总单据数
as
Begin
	set nocount on
/*定义辅助变量*/
	declare @sql nvarchar(max),					--用来执行动态语句
			@StartPoint int,					--开始节点
			@EndPoint int						--结束点
----------------------------------------------------------------------------------
/*第一步:过滤*/
	--核对是否存在该表
	if OBJECT_ID(@tbname,'U') is null and OBJECT_ID(@tbname,'V') is null
	Begin
		RaisError('无法找到该表或者视图,请核对参数信息!',16,1)
		Return
	End
	--核对是否有排序字段
	if ISNULL(@FieldOrder,'')='' 
	Begin
		--RaisError('缺少排序参数,请核对参数信息!',16,1)
		--return
		set @FieldOrder='getdate()'
	End
	--如果没有指定页数,默认设置为第一页
	if ISNULL(@PageCurrent,0)=0
		set @PageCurrent=1
	--如果没有指定每页条数,默认为条每页
	if ISNULL(@PageSize,0)<0
		set @PageSize=10
	--如果没有指定显示列,设置为列为*
	if ISNULL(@FieldShow,'')=''
		set @FieldShow='*'
	--where条件补全信息
	set @WhereString=case when ISNULL(@WhereString,N'')=N'' 
						  then N''
						  else N'where 1=1 and '+@WhereString
					 end
	--Order by 条件补全
	set @FieldOrder= N'Order by '+@FieldOrder
----------------------------------------------------------------------------------					
/*第二步:统计出总条数*/
	set @sql=
	N'select 
		@RecordCount=count(1) 
	from '
	+@tbname+N' '
	+@WhereString+N' '
	exec sp_executesql @sql,N'@RecordCount int output',@RecordCount output
----------------------------------------------------------------------------------	
/*第三步:计算开始点,结束点,拼接SQL动态语句得到所要查询信息*/
	select @StartPoint=(@PageCurrent-1)*@PageSize+1,
		   @EndPoint=@StartPoint+@PageSize-1,
		   --拼接动态语句
		   @sql=
		   N'select '+@FieldShow+
		   N' from 
		   (
				select row_number() over('+@FieldOrder+N') as CT_RowID, '+@FieldShow+ 
				N' from '+@tbname+
				N' '+@WhereString+
				N' '+
			N')tb 
			where CT_RowID between '+ltrim(@StartPoint)+N' and '+ltrim(@EndPoint)
	exec(@sql)	
	set nocount off
End
非常感谢!
Landa_Jimmy 2013-09-19
  • 打赏
  • 举报
回复
给你一个分页存储过程,只需要传入传入参数就可以了。。。。。。
if OBJECT_ID('sp_paging_Custom2005','P') is not null drop proc sp_paging_Custom2005
go
Create proc sp_paging_Custom2005
@tbname varchar(128),			--*表名称			
@PageCurrent int,				--显示页码(默认)
@PageSize int,					--每页显示条数(默认)
@FieldShow varchar(1024),		--需要查询字段(默认查询全部字段)
@FieldOrder varchar(1024),		--排序
@WhereString varchar(1024),		--查询条件
@RecordCount int output			--输出总单据数
as
Begin
	set nocount on
/*定义辅助变量*/
	declare @sql nvarchar(max),					--用来执行动态语句
			@StartPoint int,					--开始节点
			@EndPoint int						--结束点
----------------------------------------------------------------------------------
/*第一步:过滤*/
	--核对是否存在该表
	if OBJECT_ID(@tbname,'U') is null and OBJECT_ID(@tbname,'V') is null
	Begin
		RaisError('无法找到该表或者视图,请核对参数信息!',16,1)
		Return
	End
	--核对是否有排序字段
	if ISNULL(@FieldOrder,'')='' 
	Begin
		--RaisError('缺少排序参数,请核对参数信息!',16,1)
		--return
		set @FieldOrder='getdate()'
	End
	--如果没有指定页数,默认设置为第一页
	if ISNULL(@PageCurrent,0)=0
		set @PageCurrent=1
	--如果没有指定每页条数,默认为条每页
	if ISNULL(@PageSize,0)<0
		set @PageSize=10
	--如果没有指定显示列,设置为列为*
	if ISNULL(@FieldShow,'')=''
		set @FieldShow='*'
	--where条件补全信息
	set @WhereString=case when ISNULL(@WhereString,N'')=N'' 
						  then N''
						  else N'where 1=1 and '+@WhereString
					 end
	--Order by 条件补全
	set @FieldOrder= N'Order by '+@FieldOrder
----------------------------------------------------------------------------------					
/*第二步:统计出总条数*/
	set @sql=
	N'select 
		@RecordCount=count(1) 
	from '
	+@tbname+N' '
	+@WhereString+N' '
	exec sp_executesql @sql,N'@RecordCount int output',@RecordCount output
----------------------------------------------------------------------------------	
/*第三步:计算开始点,结束点,拼接SQL动态语句得到所要查询信息*/
	select @StartPoint=(@PageCurrent-1)*@PageSize+1,
		   @EndPoint=@StartPoint+@PageSize-1,
		   --拼接动态语句
		   @sql=
		   N'select '+@FieldShow+
		   N' from 
		   (
				select row_number() over('+@FieldOrder+N') as CT_RowID, '+@FieldShow+ 
				N' from '+@tbname+
				N' '+@WhereString+
				N' '+
			N')tb 
			where CT_RowID between '+ltrim(@StartPoint)+N' and '+ltrim(@EndPoint)
	exec(@sql)	
	set nocount off
End

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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