人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

SQL Server靜態頁面備份技術(SQL Server Web Assistant)

SQL Server靜態頁面備份技術(SQL Server Web Assistant)

更新時間:2021-01-16 文章作者:未知 信息來源:網絡 閱讀次數:

本段文章節選自鐵道出版社新出的《用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>')
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 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。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 双鸭山市| 赫章县| 永新县| 贵阳市| 夏津县| 汉中市| 内丘县| 顺平县| 涟水县| 图们市| 项城市| 卫辉市| 镶黄旗| 吉木萨尔县| 孟津县| 龙口市| 繁峙县| 渭源县| 平塘县| 高青县| 且末县| 上饶县| 离岛区| 海兴县| 临泉县| 资阳市| 屯门区| 陇南市| 垫江县| 堆龙德庆县| 进贤县| 雅安市| 无棣县| 连州市| 湖北省| 鄢陵县| 土默特右旗| 澄城县| 营口市| 惠水县| 濮阳市|