网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.SQL Server里函数的两种用法(可.
.sql server 2005 数据库的检查与.
.用SQL 2005的ROW_NUMBER() 实现分.
.使用T_SQL脚本创建SQLServer2000.
.谈谈sql查询的between.
.如果有输出参数则必须使用output.
.使用用于SQL Server的IIS虚拟目录.
.解决SQL Server 2000 JDBC 驱动程.
.轻松解决启用数据库复制时出现的.
.初学者需要掌握的数据库设计词汇.
.从三个不同的层次实现对数据库数.
.SQL SERVER中一些常见性能问题的.
.一次大批量数据备份和导入工作.
.循序渐进讲解数据表的十二个设计.
.利用Case敘述做SQL的動態排列.
.带你深入了解高效的内存数据库系.
.实例讲解两台SQL Server数据同步.
.SQL技巧:创建用来按小时报告的查.
.SQL Server静态页面导出技术4.
.利用sql2005的新特性实现根据子表.

SQL Server静态页面导出技术3

发表日期:2000-12-8


本段文章节选自铁道出版社新出的《用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>'
    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="'+@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>'
     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
    首先请读者通读上面的代码,以便对它有一个大概的了解。下面我们将对代码进行逐段的分析和讲解:
上一篇:SQL Server静态页面导出技术2 人气:13473
下一篇:SQL Server静态页面导出技术4 人气:12252
浏览全部的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐