Chapter 3 数据库的输出
在我们的这个例子中,由于每支股票有价格,名字,号码等信息,所以要由一个数据库来保存维护。我们的主要功能有查询某股票的当前价位,五天来的收盘价,今天的涨降幅前五名,所以,数据库中除了每支股票的号码和名字外,还得有前四天来的收盘价及当前价格。考虑到值试举个例子而已,所以只设计了一个简单的数据库,名为money ,该数据库设计了一张表,名为stock,该表包含了以下属性:num(主键) , name , price1 , price2 , price3 , price4 , price5 , temp 。 分别表示股票号码,名字,前四天收盘价,前三天收盘价,前天收盘价,昨天收盘价,现在价格,现在相对于昨天的涨降幅(百分比)。我们输入了大约50支股票的信息。
根据查询的需要,需从数据库中找到相关的数据,我们采用ASP编程,用ODBC连接数据库money,设置的数据源名为money。下面以查询当前价格为例,说明怎样与数据库连接。
<%
number=Request.QueryString("id")
Set conn=Server.CreateObject("adodb.connection")
conn.Open"dsn=money;uid=;pwd=;database=money.mdb"
sql0="select num,name,price5 from stock where num='"&number&"'"
Set rs0=Server.CreateObject("adodb.recordset")
rs0.Open sql0,conn
%>
上面的这段ASP代码相信大家都应该看懂了吧,这是一段查询代号为id的股票的纪录的代码。
考虑到返回给客户的WAP页面必须是当时的股票信息,所以我们必须通过后台程序读取当时的数据库中的数据,即时生成WAP页面(WML页面)返回给WAP客户。由于IIS本身支持ASP,而且ASP开发周期较小,所以采用ASP作为后台语言,生成WML页面,通过向客户端发送 WML的HTTP头实现向客户端传送WML页面。如下列程序所示:
<% Response.ContentType="text/vnd.wap.wml" %><?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" http://www.wapforum.org/DTD/wml_1.1.xml >
<wml>
<card>
…………
</card>
</wml>
注意:<% Response.ContentType="text/vnd.wap.wml" %>和<?xml version="1.0"?>之间不能有空格或空行。
由于 Nokia Toolkit 不支持中文,所以,所有的汉字都只能做字符的实体引用,因此,用ASP编写了一个c2u的函数,进行汉字和字符实体之间的转换,程序如下:
<%
Function c2u(text)
For i=1 to Len(text)
c=Mid(text,i,1)
c2u=c2u&"" & Hex(AscW(c)) & ";"
Next
End Function
%>
要在WML中输出汉字的时候,只需 <%=c2u("中文字符")%> 即可。
在WML中,采用不同card间的跳转来实现功能选择的步骤。采用<postfield/>标记给ASP页面传递客户端的选择信息。在ASP程序中,使用 Request.QueryString("")来获得客户端传递来的信息。
下面就是完整的一个显示页面的例子:
<%@ LANGUAGE="VBScript" %>
<%
dim j
j=0
%>
<%
Function c2u(text)
For i=1 to Len(text)
c=Mid(text,i,1)
c2u=c2u&"" & Hex(AscW(c)) & ";"
next
End Function
%>
<%
set conn=server.createobject("adodb.connection")
conn.open"dsn=money;uid=;pwd=;database=money.mdb"
sql0="update stock set temp=(price5-price4)/price4*100"
set rs0=server.createobject("adodb.recordset")
rs0.open sql0,conn
sql="select num,name,temp from stock where temp<0 order by temp ASC"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn
%>
<% Response.ContentType="text/vnd.wap.wml" %><?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"><wml>
<card id="ShowCurrent">
<p>
<%=c2u("跌幅前五名:")%><br/>
<%
while j<5 and not rs.eof
%>
<%=rs(0).Value%>-<%=c2u(rs(1).Value)%> <%=rs(2).Value%>%
<br/>
<%
rs.movenext
j=j+1
wend
%>
</p>
<do type="accept" label="<%=c2u("返回")%>">
<go href="index.asp#Welcome"/>
</do>
<p align="center">
(c) 501 Studio, 2001<br/>
All rights reserved !
</p>
</card>
</wml>
<%
rs.close
%>
到这里,相信大家对实现动态WAP站点应该都有了一个初步的了解了吧。如果对内容有什么疑问,可以和我联系。lonelyp@etang.com
在我们的这个例子中,由于每支股票有价格,名字,号码等信息,所以要由一个数据库来保存维护。我们的主要功能有查询某股票的当前价位,五天来的收盘价,今天的涨降幅前五名,所以,数据库中除了每支股票的号码和名字外,还得有前四天来的收盘价及当前价格。考虑到值试举个例子而已,所以只设计了一个简单的数据库,名为money ,该数据库设计了一张表,名为stock,该表包含了以下属性:num(主键) , name , price1 , price2 , price3 , price4 , price5 , temp 。 分别表示股票号码,名字,前四天收盘价,前三天收盘价,前天收盘价,昨天收盘价,现在价格,现在相对于昨天的涨降幅(百分比)。我们输入了大约50支股票的信息。
根据查询的需要,需从数据库中找到相关的数据,我们采用ASP编程,用ODBC连接数据库money,设置的数据源名为money。下面以查询当前价格为例,说明怎样与数据库连接。
<%
number=Request.QueryString("id")
Set conn=Server.CreateObject("adodb.connection")
conn.Open"dsn=money;uid=;pwd=;database=money.mdb"
sql0="select num,name,price5 from stock where num='"&number&"'"
Set rs0=Server.CreateObject("adodb.recordset")
rs0.Open sql0,conn
%>
上面的这段ASP代码相信大家都应该看懂了吧,这是一段查询代号为id的股票的纪录的代码。
考虑到返回给客户的WAP页面必须是当时的股票信息,所以我们必须通过后台程序读取当时的数据库中的数据,即时生成WAP页面(WML页面)返回给WAP客户。由于IIS本身支持ASP,而且ASP开发周期较小,所以采用ASP作为后台语言,生成WML页面,通过向客户端发送 WML的HTTP头实现向客户端传送WML页面。如下列程序所示:
<% Response.ContentType="text/vnd.wap.wml" %><?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" http://www.wapforum.org/DTD/wml_1.1.xml >
<wml>
<card>
…………
</card>
</wml>
注意:<% Response.ContentType="text/vnd.wap.wml" %>和<?xml version="1.0"?>之间不能有空格或空行。
由于 Nokia Toolkit 不支持中文,所以,所有的汉字都只能做字符的实体引用,因此,用ASP编写了一个c2u的函数,进行汉字和字符实体之间的转换,程序如下:
<%
Function c2u(text)
For i=1 to Len(text)
c=Mid(text,i,1)
c2u=c2u&"" & Hex(AscW(c)) & ";"
Next
End Function
%>
要在WML中输出汉字的时候,只需 <%=c2u("中文字符")%> 即可。
在WML中,采用不同card间的跳转来实现功能选择的步骤。采用<postfield/>标记给ASP页面传递客户端的选择信息。在ASP程序中,使用 Request.QueryString("")来获得客户端传递来的信息。
下面就是完整的一个显示页面的例子:
<%@ LANGUAGE="VBScript" %>
<%
dim j
j=0
%>
<%
Function c2u(text)
For i=1 to Len(text)
c=Mid(text,i,1)
c2u=c2u&"" & Hex(AscW(c)) & ";"
next
End Function
%>
<%
set conn=server.createobject("adodb.connection")
conn.open"dsn=money;uid=;pwd=;database=money.mdb"
sql0="update stock set temp=(price5-price4)/price4*100"
set rs0=server.createobject("adodb.recordset")
rs0.open sql0,conn
sql="select num,name,temp from stock where temp<0 order by temp ASC"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn
%>
<% Response.ContentType="text/vnd.wap.wml" %><?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"><wml>
<card id="ShowCurrent">
<p>
<%=c2u("跌幅前五名:")%><br/>
<%
while j<5 and not rs.eof
%>
<%=rs(0).Value%>-<%=c2u(rs(1).Value)%> <%=rs(2).Value%>%
<br/>
<%
rs.movenext
j=j+1
wend
%>
</p>
<do type="accept" label="<%=c2u("返回")%>">
<go href="index.asp#Welcome"/>
</do>
<p align="center">
(c) 501 Studio, 2001<br/>
All rights reserved !
</p>
</card>
</wml>
<%
rs.close
%>
到这里,相信大家对实现动态WAP站点应该都有了一个初步的了解了吧。如果对内容有什么疑问,可以和我联系。lonelyp@etang.com