您的位置:首页技术开发数据库技巧 → SQL Server静态页面导出技术3

SQL Server静态页面导出技术3

时间:2004/11/15 23:31:00来源:本站整理作者:蓝点我要评论(0)

本段文章节选自铁道出版社新出的《用BackOffice建立Intranet/Extranet应用》一书(现已在海淀图书城有售)。本书详尽地讲述了如何使用微软BackOffice系列产品来组建Intranet/Extranet应用。通过它您将掌握NT的安装和设置、使用IIS建立Web站点、通过ILS建立网络会议系统、用Exchange建立企业的邮件和协作系统、用SQL Server建立Web数据库应用、用Proxy Server建立同Internet安全可靠的连接、用Media Server建立网络电视台/广播站、用Chart server建立功能强大的聊天室、用Site Server建立个性化的邮件列表和分析网站的访问情况、用Commerce Server建立B2B或B2C的电子商务网站。此外本书还对网络的安全性进行了讨论,从而指导您建立一个更为健壮和安全的网络应用。阅读本书之后,您将发现实现丰富多彩的网络应用原来这样简单……

绝对原创,欢迎转载。但请务必保留以上文字。





静态页面导出实例分析:

    下面讨论如何使用静态页面导出技术来实现我们在前面要求的各种功能。

    首先,我们来看看要导出的页面文件的结构:

    所有导出的页面都将被放在一个目录名为当日期的目录下。其中有两个非导出文件index.htm和show.htm文件。其作用同cbbinput目录中的default.htm和show.htm文件相类似。都是为了满足使页面能够正常显示的需要。之所以使用index.htm而不用default.htm为文件名,是因为大多数ISP提供的主页空间的目录省缺文件的名字都是index.htm。

    当日的各个版面则导出为一个名为list.htm的文件。每个版面的文章题目列表则分别按顺序导出为1~n(n为当日的版面总数)个页面文件。其文件名也为1.htm~n.htm。当日所刊载的各个文章则以其id为文件名分别进行导出。在list.htm文件中,包含到各个版面页面文件的超链接。在各个版面的页面文件中,又包含到各个文章页面文件的超连接。

    在出版报的主页上,还应该有一个用来显示日期的页面文件。每个日期的超链接都将与其页面文件所在的目录中的index.htm文件相对应。点击日期后,将弹出一个新的浏览器窗口。其中显示的是相应日期的报纸内容。

    此外,还应当将此日各篇文章的配图文件也拷贝到此目录之下。

    我们为此建立一个任务,它会在每天下午的六点执行,将当天报纸的内容导出为静态的HTML页面文件。此任务的代码如下(可以在本书配套光盘的SQLServer目录的子目录test下找到此段代码的文件,其文件名为webout.sql。它使用的模板文件也可以在此目录下找到):

use test

go

declare

    @riqi  varchar(20),

    @filepath  varchar(255),

    @listfile  varchar(255),

    @command varchar(255)

set @riqi=left(convert(varchar(40),getdate(),20),10)

set @filepath='d:\webout\'+@riqi+'\'

set @command='md '+@filepath

execute master.dbo.Xp_cmdshell @command

set @command='md '+@filepath+'images'

execute master.dbo.Xp_cmdshell @command

set @command ='copy d:\test\files\*.* d:\webout\'+@riqi+'\'

execute master.dbo.Xp_cmdshell @command

set @command ='copy d:\test\files\images\*.* d:\webout\'+@riqi+'\images\'

execute master.dbo.Xp_cmdshell @command

set @command ='copy d:\test\'+@riqi+'\*.* d:\webout\'+@riqi+'\'

execute master.dbo.Xp_cmdshell @command

set @listfile=@filepath+'list.htm'

execute sp_makewebtask

@outputfile=@listfile,

@query='select distinct banmian

from gaojian

where kanwu=''出版报'' and datepart(yy,riqi)=datepart(yy,getdate()) and datepart(dy,riqi)=datepart(dy,getdate())',

@templatefile='d:\test\list.tml',

@codepage=936



declare

@lists int,

@banmian varchar(64),

    @filename varchar(64),

    @search varchar(2000)

set @lists=0

declare point cursor for

select distinct banmian

from gaojian

where kanwu='出版报' and datepart(yy,riqi)=datepart(yy,getdate()) and datepart(dy,riqi)=datepart(dy,getdate())

for read only



open point

fetch point into

  @banmian

while (@@fetch_status=0)

begin

set @lists=@lists+1

set @filename=@filepath+convert(varchar(64),@lists)+'.htm'

set @search='SELECT id,timu,laiyuan

FROM gaojian

WHERE datepart(yy,riqi)=datepart(yy,convert(datetime,'''+@riqi+'''))

and datepart(dy,riqi)=datepart(dy,convert(datetime,'''+@riqi+'''))'+

'and banmian ='''+@banmian+'''and kanwu=''出版报''order by timu'

execute sp_makewebtask

@outputfile=@filename,

@query=@search,

@templatefile='d:\test\list2.tml',

@codepage=936

fetch point into

@banmian

end

close point

deallocate point



declare @gaojianid int

declare point2 cursor for

select gaojian.id

from gaojian

where kanwu='出版报' and datepart(yy,riqi)=datepart(yy,getdate()) and

datepart(dy,riqi)=datepart(dy,getdate())

for read only



open point2

fetch point2 into

  @gaojianid

while (@@fetch_status=0)

begin

set @filename=@filepath+convert(varchar(64),@gaojianid)+'.htm'

set @search='SELECT timu,laiyuan,neirong,left(pics,10)+ STUFF(pics,1,21,''''),yuanwen

FROM gaojian

WHERE id='+convert(varchar(64),@gaojianid)

execute sp_makewebtask

@outputfile=@filename,

@query=@search,

@templatefile='d:\test\outfile.tml',

@codepage=936

fetch point2 into

@gaojianid

end

close point2

deallocate point2



declare

@dy int,

    @date varchar(20),

    @yue varchar(2),

    @yue2 varchar(2),

    @ri int,

    @xingqi int,

    @year int,

    @outchar varchar(1600),

    @tt int



create table ##daylist

    (out varchar(1600))



set @yue2='00'

set @tt=0



declare point3 cursor for

SELECT distinct

dy=datepart(dy,riqi),date=left(convert(varchar(40),riqi,20),10),

yue=convert(varchar(2),datepart(mm,riqi)),ri=datepart(dd,riqi),xingqi=datepart(dw,riqi),year=datepart(yy,riqi)

FROM gaojian

where kanwu = '出版报'

order by year,dy

for read only



open point3

fetch point3 into

        @dy,@date,@yue,@ri,@xingqi,@year

while (@@fetch_status=0)

begin

if @yue<>@yue2

begin

set @tt=0

if @yue2=0

   insert into ##daylist

values('

'+convert(varchar(4),@year)+

'年'+@yue+'月份

')

else

   insert into ##daylist

values('











































星期日

星期一

星期二

星期三

星期四

星期五

星期六

'+

convert(varchar(4),@year)+'年'+@yue+'月份

')

end

if @tt<>0

   if @xingqi < 7

      set @outchar=@outchar+''

    else

      set @outchar=@outchar+''

else

      begin

      set @tt=1

      set @outchar=

      case

     when @xingqi=1 then ''

    when @xingqi=2 then ''

    when @xingqi=3 then ''

    when @xingqi=4 then ''

    when @xingqi=5 then ''

    when @xingqi=6 then ''

    when @xingqi=7 then ''

      end

    if @xingqi < 7

      set @outchar=@outchar+''

    else

      set @outchar=@outchar+''

     end



insert into ##daylist values(@outchar)



set @yue2=@yue

set @outchar=''



fetch point3 into

        @dy,@date,@yue,@ri,@xingqi,@year

end

close point3

deallocate point3



execute sp_makewebtask

@outputfile='d:\test\daylist.htm',

@query='select * from ##daylist',

@templatefile='d:\test\rili.tml',

@codepage=936

drop table ##daylist

    首先请读者通读上面的代码,以便对它有一个大概的了解。下面我们将对代码进行逐段的分析和讲解:











































































































































星期日

星期一

星期二

星期三

星期四

星期五

星期六

















































'+convert(varchar(2), @ri)+'

'+convert(varchar(2), @ri)+'































































































































'+convert(varchar(2), @ri)+'

'+convert(varchar(2), @ri)+'






































































相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 mssql企业管理器不能打 Oracle PRKC-1002错误原因和解决方案SQL SERVER数据库日志清空图文教程win2003计算机改名后sql server 2005 本地复DB2错误信息码大全

人气排行 彻底解决mysql中文乱码的办法mysql数据库root密码忘记的修改方法SQL SERVER数据库日志清空图文教程.bak备份文件如何恢复Oracle PRKC-1002错误原因和解决方案Oracle错误代码大全如何将txt的文本数据导入SQL server 2005呢DB2错误信息码大全