我們平常在查詢數(shù)據(jù)庫(kù)的時(shí)候,經(jīng)常會(huì)把一些查詢的結(jié)果保存起來,如數(shù)據(jù)存放到EXCEL中,但如果能有辦法把數(shù)據(jù)存放到HTML頁(yè)面中去顯示,并且把數(shù)據(jù)以網(wǎng)頁(yè)形式展現(xiàn)出來的時(shí)候,這樣會(huì)更直觀。
我們先來了解一下模板文件,Template模板,后綴名稱為TPL,TPL文件和HTML文件一樣,在TPL文件中注意其中的">標(biāo)記,分別代表的意思如下:
Begindetail:代表準(zhǔn)備開始替換模板文件的開始
Enddetail:代表結(jié)束替換模板文件
insert_data_here:代表指明在何處插入結(jié)果集中的數(shù)據(jù)。如果結(jié)果集記錄中包含多個(gè)字段的話,insert_data_here將按照其在記錄中的順序,也就是查詢語(yǔ)句SELECT執(zhí)行語(yǔ)句中的字段順序,來按順序地插入數(shù)據(jù)。也就是說,每個(gè)結(jié)果記錄中的每個(gè)字段只能在頁(yè)面中被插入一次。如果要想在頁(yè)面中多次使用某個(gè)字段,可以先將它賦給一個(gè)變量。然后再反復(fù)地使用此變量即可。
那我們就來做一個(gè)簡(jiǎn)單格式的TPL模板,命名為OutPutHtml.TPL,模板的HTML代碼如下:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<TITLE>show HTML</TITLE>
<BODY>
<center>
<P>
<H2>
<TABLE BORDER="1" cellpadding="0" cellspacing="0">
<TR> <TH><B>公司名稱</B></TH>
<TH><B>聯(lián)系人</B></TH>
<TH><B>產(chǎn)品名稱</B></TH>
<TH><B>產(chǎn)品名稱</B></TH>
</TR>
<%begindetail%>
<TR> <TD> <%insert_data_here%> </TD>
<TD ALIGN=RIGHT><%insert_data_here%></TD>
<TD ALIGN=RIGHT><%insert_data_here%></TD>
<TD ALIGN=RIGHT><%insert_data_here%></TD>
</TR>
<%enddetail%>
</TABLE>
</center>
</H2>
</BODY>
</HTML>
模板文件做好后,我們先把它存放在“D:\SQL Server文件”目錄下面,然后我們?cè)赟QL SERVER查詢分析器里面執(zhí)行下面的代碼:
EXECUTE sp_makewebtask
@outputfile = ’D:\SQL Server文件\OutPutHtml.htm’,
@query = ’Select Suppliers.CompanyName,Suppliers.ContactName,Products.ProductName,Products.UnitPrice
From Suppliers Inner Join Products On Suppliers.SupplierID=Products.SupplierID
Where Suppliers.SupplierID=1’,
@templatefile = ’D:\SQL Server文件\OutPutHtml.TPL’,
@dbname = ’NorthWind’,
@rowcnt = 0,
@whentype = 9 ,
@lastupdated = 1
GO
我們先看sp_makewebtask這個(gè)SQL Server自帶的系統(tǒng)存儲(chǔ)過程,它用來創(chuàng)建一項(xiàng)生成 HTML文檔的任務(wù),該文檔包含執(zhí)行過的查詢返回的數(shù)據(jù)。在本例中,上述的參數(shù)分別代表的意思為:
@outputfile
生成HTML 文件的位置。如果文檔將在遠(yuǎn)程計(jì)算機(jī)上生成,則該參數(shù)可以是 UNC 名稱。
@query
要運(yùn)行的查詢。當(dāng)在運(yùn)行任務(wù)時(shí),查詢結(jié)果將以表格形式顯示在 HTML 文檔中??梢灾付ǘ鄠€(gè) SELECT 查詢,這樣可以在 outputfile 中顯示多個(gè)表。
@templatefile
用于生成 HTML 文檔的模板文件的路徑。模板文件包含 HTML 文檔的格式特征信息和標(biāo)記 ,該標(biāo)記指示將查詢結(jié)果添加到 HTML 表中的位置。
@dbname
在其上運(yùn)行查詢的數(shù)據(jù)庫(kù)名。
指定查詢結(jié)果是以粗體 (1) 還是非粗體 (0) 顯示。bold 的數(shù)據(jù)類型為 tinyint,默認(rèn)值為 0。
@rowcnt
指定生成的 HTML 文檔中所顯示行的最大值。默認(rèn)值為 0,用來指定顯示在 HTML 文檔中滿足給定查詢的所有行。
@whentype
指定何時(shí)運(yùn)行創(chuàng)建 HTML 文檔的任務(wù)。9代表立即和應(yīng)請(qǐng)求創(chuàng)建頁(yè)。將立即創(chuàng)建和重新創(chuàng)建 HTML 文檔。
@lastupdated
指定所生成的 HTML 文檔是否顯示“上次更新時(shí)間:”時(shí)間戳指示上次更新的日期和時(shí)間 (1) 或者沒有時(shí)間戳 (0)。在 HTML 文檔中,時(shí)間戳出現(xiàn)在查詢結(jié)果的前一行。
上面的存儲(chǔ)過程如果在SQL Server 2005下執(zhí)行,還須得開通執(zhí)行它的權(quán)限,可以執(zhí)行下面的代碼:
sp_configure ’show advanced options’, 1;
GO
RECONFIGURE;
GO
sp_configure ’Web Assistant Procedures’, 1;
GO
RECONFIGURE
GO
執(zhí)行過后,我們看在D盤SQL Server文件下面生成一個(gè)OutPutHtml.htm文件,查看原代碼,可以看到模板標(biāo)記替換成對(duì)應(yīng)的數(shù)據(jù)庫(kù)的內(nèi)容,代碼如下:
<HTML>
<HEAD>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<TITLE>show HTML</TITLE>
<BODY>
<center>
<P>
<H2>
<TABLE BORDER="1" cellpadding="0" cellspacing="0">
<TR> <TH><B>公司名稱</B></TH>
<TH><B>聯(lián)系人</B></TH>
<TH><B>產(chǎn)品名稱</B></TH>
<TH><B>產(chǎn)品名稱</B></TH>
</TR>
<TR> <TD> Exotic Liquids </TD>
<TD ALIGN=RIGHT>Charlotte Cooper</TD>
<TD ALIGN=RIGHT>Chai</TD>
<TD ALIGN=RIGHT>18.0000</TD>
</TR>
<TR> <TD> Exotic Liquids </TD>
<TD ALIGN=RIGHT>Charlotte Cooper</TD>
<TD ALIGN=RIGHT>Chang</TD>
<TD ALIGN=RIGHT>19.0000</TD>
</TR>
<TR> <TD> Exotic Liquids </TD>
<TD ALIGN=RIGHT>Charlotte Cooper</TD>
<TD ALIGN=RIGHT>Aniseed Syrup</TD>
<TD ALIGN=RIGHT>10.0000</TD>
</TR>
</TABLE>
</center>
</H2>
</BODY>
</HTML>
運(yùn)行此HTML文件,可以看到結(jié)果如圖:
圖 SQL SERVER查詢結(jié)果輸出到HTML頁(yè)面
就和SQL語(yǔ)句查詢的結(jié)果對(duì)應(yīng)了,這樣,我們就把查詢語(yǔ)句輸入到HTML頁(yè)面了。
IT專家網(wǎng)原創(chuàng)文章,未經(jīng)許可,嚴(yán)禁轉(zhuǎn)載!