我要投稿
  • 您当前的位置:365bet官方 -> 技术教程 -> 数据库教程 -> SQL server教程 -> 教程内容
  • [ 收藏本页教程 ]
  • SQL Server静态页面导出技术3SQL server]教程

    教程作者:佚名    教程来源:不详   教程栏目:SQL server教程    收藏本页
      本段文章节选自铁道出版社新出的《用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('<TABLE BORDER="BORDER" ALIGN="CENTER"><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="BORDER" ALIGN="CENTER"><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="'+@date+'/index.htm" TARGET="new">'+convert(varchar(2), @ri)+'</a></td>'
        else
          set @outchar=@outchar+'<td><a href="'+@date+'/index.htm" TARGET="new">'+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>'
      &nbs
    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.ct131.com All Rights Reserved.365bet官方 版权所有