通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 my小屋
联系我们
设为首页
加入收藏

 

qq,asp,php,jsp,xml,sql,.net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 网络赚钱 | 网站地图 | 广告服务 | 服务
当前位置:首页>>编程开发>>sql专区>>正文 新版上线![旧版]
注:打开慢时请稍等
sql server静态页面导出技术(sql server web assistant)6

http://www.iyit.net  日期:2006-5-3 19:19:40  来源:  点击:
参加讨论】 本段文章节选自铁道出版社新出的《用backoffice建立intranet/extranet应用》一书(现已在海淀图书城有售,外地或者需要送货上门的读者可以到www.wanbook.com.cn或www.e-bookshop.com.cn上在线购买。本书书号为isbn7113039448)。本书详尽地讲述了如何使用微软backoffice系列产品来组建intranet/extranet应用。通过它您将掌握nt的安装和设置、使用iis建立web站点、通过ils建立网络会议系统、用exchange建立企业的邮件和协作系统、用sql server建立web数据库应用、用proxy server建立同internet安全可靠的连接、用media server建立网络电视台/广播站、用chart server建立功能强大的聊天室、用site server建立个性化的邮件列表和分析网站的访问情况、用commerce server建立b2b或b2c的电子商务网站。此外本书还对网络的安全性进行了讨论,从而指导您建立一个更为健壮和安全的网络应用。阅读本书之后,您将发现实现丰富多彩的网络应用原来这样简单……
绝对原创,欢迎转载。但请务必保留以上文字。


最后,我们来介绍导出日期列表页面部分的代码。我们在前面通过idc技术产生过日期的列表页面,但是在静态页面导出时采用的方法与其不同。前面通过idc所产生的页面在浏览器端通过java来完成对每个日期产生最终页面的工作。这样会造成产生的页面文件过于庞大。因为对于每个日期,都要包含下面的一段java代码:
<script>
yue1=yue2;
yue2=4;
if (yue1!=yue2){
tt=0;
if (yue1==0){
document.write('<table border="border" align="center"><th><tr><h2>1999-4月</h2></tr></th><tr><td>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td></tr><tr>')
}else{
document.write('</tr></table>')
document.write('<table border="border" align="center"><th><tr><h2>1999-4月</h2></tr></th><tr><td>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td></tr><tr>')
}
}
ri=22;
xingqi=5;
if (tt!=0){
if (xingqi<7) {
document.write('<td><font size="+1"><a href="goto.idc?day=1999-04-22" target="goto"><b>22</b></a></font></td>');
}else {
document.write('<td><font size="+1"><a href="goto.idc?day=1999-04-22" target="goto"><b>22</b></a></font></td></tr><tr>');
}
}else{
tt=1;
for (i=1;i < xingqi;i++){
document.write('<td></td>');
}
document.write('<td><font size="+1"><a href="goto.idc?day=1999-04-22" target="goto"><b>22</b></a></font></td>');
if (xingqi==7){
document.write('</tr><tr>');
}
}
</script>
如果为一年的报纸内容来生产一个页面的话,其大小可能会超过几百kb。这对于局域网来说,算不了什么。这几百kb数据所带来的延迟用户一般是察觉不到的。因为在局域网上传送这些数据所耗费的时间可能还不到一秒。而对于internet用户,就不得不考虑其有限的带宽了。如此之大的页面文件所带来的延迟,恐怕是用户所不能承受的。所以必须缩小此页面文件的尺寸。我们使用游标和流控制语句在进行静态页面导出的时候,在服务器端完成相应的判断工作。从而只生产"纯"html文件。下面就是实现此功能的代码段:
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
如果读者十分熟悉java语言的话,可以看到此段代码同上面的java代码具有相类似的结构。所不同的是,它是使用sql语言中的流控制语句来实现的。在其中我们使用了begin…end、while、if…else…和case等流控制语句。
流控制语句:
在sql语言中,有下列流控制语句:
■ begin…end:将多条sql语句封装在其间,组成一个语句块。从而使这些语句作为一个整体来执行。
■ if…else…:其语法结构如下。
if 布尔表达式
{sql_statement | statement_block}
[else
{sql_statement | statement_block}]
当if后面的布尔表达式的值为真时,执行if后面的语句或语句块;当布尔表达式的值为假时,执行else后面的语句或语句块。
■ goto语句:其语法结构如下。
定义标号:
label:
程序跳转:
goto label
goto语句强迫程序跳转到由标号标示之处的语句。
■ while语句:其语法结构如下。
while布尔表达式
{sql_statement | statement_block}
[break]
{sql_statement | statement_block}
[continue]
while语句为一个循环语句,只要其后的布尔表达式的值为真,它就会一直执行下去。break语句用于将程序从此循环中跳出。而continue用于跳过其后的语句直接进入下一个循环。
■ case语句:case语句有以下两种语法结构。
简单case功能:
case 输入表达式
when 条件表达式 then 返回表达式
[...n]
[
else 返回表达式
]
end
其执行过程为:将输入表达式的值同各个条件表达式的值进行对比。如果同某个条件表达式的值相同,则返回then后的返回表达式的值。如果没有条件表达式的值同输入表达式的值相同,则返回else后的返回表达式的值。
搜索case 功能:
case
when 布尔表达式 then返回表达式
[...n]
[
else 返回表达式
]
end
与前面的简单case功能不同,搜索case功能没有输入表达式。其执行过程为:判断when后的布尔表达式是否为真,如果为真则输出then后的返回表达式的值并跳转到end后面的语句;如果为假则对下一个when后的布尔表达式进行判断。如果所有的when后面的布尔表达式的值都为假,则返回else后面的返回表达式的值。
上面的代码就是用搜索case功能的语法结构书写的,如果将其改为用简单case功能的语法结构书写,其代码如下:
case @xingqi
when 1 then ''
when 2 then '<td></td>'
when 3 then '<td></td><td></td>'
when 4 then '<td></td><td></td><td></td>'
when 5 then '<td></td><td></td><td></td><td></td>'
when 6 then '<td></td><td></td><td></td><td></td><td></td>'
when 7 then '<td></td><td></td><td></td><td></td><td></td><td></td>'
end
在此段代码中,我们还定义了一个临时表##daylist。用来保存程序生成的页面并最后将其输出。在sql server中,可以在程序中建立用来保存临时结果数据的表。我们称之为临时表。临时表会在建立它的对话结束或涉及它的任务停止时自动被系统删除。当然,我们也可以通过drop table语句来显示地将其删除。
临时表分为全局和局部两种。全局临时表可以被当前所有的对话使用,而局部临时表只能被建立它的对话使用。由于我们将在一个扩展存贮过程中使用此表(这样相当于在另一个对话之中访问此表),所以我们选择建立一个全局临时表。全局临时表和局部临时表的区别在于全局临时表的名字前有两个"#",而局部临时表的名字前只有一个"#"。
此段代码使用的导出模板文件rili.tml十分简单,其代码如下:
<html>
<title>出版报</title>
<body background="images/wb00703_.gif">
<body bgcolor="ffffff">
<%begindetail%>
<%insert_data_here%>
<%enddetail%>
</table>
</body>
</html>
最后导出的日期列表页面文件中仅仅包含简单的html语句,其尺寸也大大地缩小了。从原来的几百kb缩小到了只有三十kb左右。在本书配套光盘的sqlserver目录下,你可以找到通过此段代码生成的一个例子文件daylist.htm。


编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:sql server同index server的结合应用2/3
下一篇:一个得到在两个日期之间的休息日的sql server 的函数
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
第十七章 sql编程(二) 第十七章 sql编程(一) windows2000下安装apache php4 mysql  
windows 2000下安装php4及mysql大揭密  win2000 + php + mysql + tomcat + jsp 超级服务器apache+mysql+php+ssl之完全
超级服务器apache+mysql+php+ssl之完全 linux下快速安装“apache+php3+mysql” 如何集成linux、apache、php4、fastcgi
接触 solaris : 安装 apache + php + m linux服务器配置方案mysql(上) sql server 7.0与以前的版本相比,安全
设置proxy server和sql server实现互联 microsoft sql server 7.0安全问题     mysql安全性指南(3)(转)            
mysql安全性指南 (2)(转)            mysql安全性指南 (1)(转)            怎样才能限制sql server只能让指定的机
远程检测ms sql server账号安全性      模拟sql server的两个日期处理函数     用dbsql类加快开发mysql数据库程序的速
将access数据库移植到microsoft sql se microsoft sql server 7.0数据库设置与 microsoft sql server 7.0数据库升级转
最新更新 热点排行 推荐新闻
sql server 7.0与以前的版本相比,安全
设置proxy server和sql server实现互联
microsoft sql server 7.0安全问题   
mysql安全性指南(3)(转)           
mysql安全性指南 (2)(转)          
在frontpage 2000中插入flash动画
用frontpage 2000使图像“减肥”
提高frontpage 2002使用效率
用frontpage 2000创建网页动画
用frontpage 2000巧做样式表
用frontpage 2000制作鼠标光照特效
用frontpage轻松转换图片格式
frontpage10全透视教程(9)
frontpage10全透视教程(8)
frontpage10全透视教程(7)
sql server 7.0与以前的版本相比,安全
sql简明教程(6)
sql简明教程(5)
sql简明教程(4)
sql简明教程(3)
qq珊瑚虫外挂4.0版本发布!
多个广告位招商!
摄影后期系列一:1分钟为数码相片去红眼
qq挂机说明
asp进度条
photoshop通道抠图:给秀发飞扬的mm照
教您显示器亮度对比度的调节
新版上线,今日正式开通!!!
更多精彩图文广告等着您!
asp中使用sql语句教程
sql简明教程(1)
第二十章 开发delphi对象式数据管理功
sql简明教程(1)
vbscript和javascript互相调用 
jsp教程(四)-jsp actions的使用
操作系统被入侵后的修复过程
五一别忘电脑防毒 养成良好上网习惯
google对ie浏览器将捆绑搜索功能表担忧
新版上线,今日正式开通!!!
用photoshop创意图形“岁月”
摄影后期系列一:1分钟为数码相片去红眼

 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights © 2004-2006 iyit.net all rights reserved.
网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息