选择显示字体大小

sql server静态页面导出技术3


  本段文章节选自铁道出版社新出的《用backoffice建立intr.net/extr.net应用》一书(现已在海淀图书城有售)。本书详尽地讲述了如何使用微软backoffice系列产品来组建intr.net/extr.net应用。 通过它您将掌握nt的安装和设置、使用iis建立web站点、通过ils建立网络会议系统、用exchange建立企业的邮件和协作系统、用sql server建立web数据库应用、用proxy server建立同inte.net安全可靠的连接、用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('<table border=&quot;border&quot; align=&quot;center&quot;><th><tr><h2>'+convert(varchar(4),@year)+
'年'+@yue+'月份</h2></tr></th><tr><td>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td></tr>')
else
   insert into ##daylist
values('</tr></table><table border=&quot;border&quot; align=&quot;center&quot;><th><tr><h2>'+
convert(varchar(4),@year)+'年'+@yue+'月份</h2></tr></th><tr><td>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td></tr>')
end
if @tt<>0
   if @xingqi < 7
      set @outchar=@outchar+'<td><a href=&quot;'+@date+'/index.htm&quot; target=&quot;new&quot;>'+convert(varchar(2), @ri)+'</a></td>'
    else
      set @outchar=@outchar+'<td><a href=&quot;'+@date+'/index.htm&quot; target=&quot;new&quot;>'+convert(varchar(2), @ri)+'</a></td></tr><tr>'
else
      begin
      set @tt=1
      set @outchar=
      case
     when @xingqi=1 then ''
    when @xingqi=2 then '<td></td>'
    when @xingqi=3 then '<td></td><td></td>'
    when @xingqi=4 then '<td></td><td></td><td></td>'
    when @xingqi=5 then '<td></td><td></td><td></td><td></td>'
    when @xingqi=6 then '<td></td><td></td><td></td><td></td><td></td>'
    when @xingqi=7 then '<td></td><td></td><td></td><td></td><td></td><td></td>'
      end
    if @xingqi < 7
      set @outchar=@outchar+'<td><a href=&quot;'+@date+'/index.htm&quot; target=&quot;new&quot;>'+convert(varchar(2), @ri)+'</a></td>'
    else
      set @outchar=@outchar+'<td><a href=&quot;'+@date+'/index.htm&quot; target=&quot;new&quot;>'+convert(varchar(2), @ri)+'</a></td></tr><tr>'
     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
    首先请读者通读上面的代码,以便对它有一个大概的了解。下面我们将对代码进行逐段的分析和讲解:


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons