问答题 阅读以下说明,根据要求回答问题。
[说明]
某电子商务网站使用ASP技术开发,数据库采用SQL Server,该商务网站具有商品展示、商品查询、会员登录、购物车管理、后台商品管理及会员管理等功能。数据库名为CommodityBase,数据库包括商品表、商品大类表,商品小类表,用户表等,其中商品表(sw_Commodity)的结构如表所示。
sw_Commodity表结构
字段 数据类型 主/外键 说明
sw_commodityid varchar PK 商品ID
sw_smallclassid varchar PK 关联商品小类表的sw_smallclassid
sw_cname varcnar 名称
sw_cdetail varchar 商品信息
sw_cpnce float 商品价格
sw_cmemberprice float 会员价
sw_cfeworice float 差价
sw_cpicture varchar 图片
sw_ctime DateTime 添加时间
sw_stock int 商品库存量
sw_chit bigint 单击数
sw_cdetaill varchar 其他描述


问答题 在sw_Commodity表中,字段sw_smallclassid关联商品小类表的sw_smallclassid字段,它是sw_Commodity表的外键,是商品小类表的______;如果某个商品被单击浏览了,那么该商品的单击数应该加1,使商品ID为“sw0001”的商品的单击数加1的SQL语句为______;如果在查询商品时,需要按照商品单击数降序排序,那么需要在查询语句“select*from sw_Commodity”的后面加上______。
A.update sw_Commodity set sw_chit=sw_chit+1
B.insert into sw_Commodity sw_chit=sw_chit+1 where sw_commodityid='sw0001'
C.update sw_Commodity set sw_chit=sw_chit+1 where sw_commodityid='sw0001'
D.update CommodityBase set sw_chit=sw_chit+1 where sw_commodityid='sw0001'
A.orderby sw_chitdesc B.orderby sw_chit
C.group by sw_chit desc D.order by sw_chit asc
【正确答案】主键或主码 C A
【答案解析】在数据库中,主键(Primary key)是指能惟一标识一个实体的属性,其取值非空且惟一。外键(Foreign key)用于与其他关联表建立联系。它是所关联表的主键。依题意,字段sw_smallclassid是商品小类表的主键,是商品表(sw_Commodity)的外键。
结构化查询语言(SQL)中,数据更新操作的一般语法格式如下:
UPDATE<表名>
SET<列名>=<表达式>
[, <列名>=<表达式>]…
[WHERE<条件>];
其功能是修改指定表中满足WHERE子句条件的元组。其中SET子句给出<表达式>的值用于取代相应的属性列值。如果省略WHERE子句,则表示要修改表中的所有元组。依题意,若某个商品被单击浏览了,则该商品的单击数(sw_chit)应该加1。使商品ID(sw_commodityid)为“sw0001”的商品的单击数加1的SQL语句如下。
update sw_Commodity
set sw_chit=sw_chit+1
where sw_commodityid='sw0001'
数据查询是SQL的主要功能。SELECT语句完整的句法如下。
SELECT [ALL|DISTINCT]<目标列表达式>[, <目标列表达式>]...
FROM<表名或视图名>[, <表名或视图名>]...
[WHERE<条件表达式>]
[GROUP BY<列名1>[HAVING<条件表达式>]]
[ORDER BY<列名2>[ASCI DESC]];
主语句SELECT-FROM-WHERE的含义是,根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。
在查询商品时,若需要按照商品单击数(sw_chit)降序(desc)排序,则需要使用以下的查询语句。
select *
from sw_Commodity
order by sw_chit desc
问答题 在ASP中,常见的内置对象有application、session、cookie等。会员登录成功以后,要将会员信息进行临时保存,其中利用______可以将会员信息临时存在Web服务器内存中,利用______可以将会员信息临时存于客户端硬盘上。如果要统计网站的访问人数,可以使用ASP内置对象______实现。
【正确答案】session cookie application
【答案解析】Session对象为当前用户会话提供信息,还提供对可用存储信息的会话范围缓存的访问,以及控制如何管理会话的方法。其关键特性是:将状态信息保存在服务器缓存中(存在数据量受限问题),与会话相关,在会话的整个生存期中存在,不会被主动丢弃,不被序列化,不发生服务器与客户端的数据传输,具有较高的安全性。例如,电子商务网站的购物车,由于购物车信息与会话相关,且安全性很重要,因此使用Session对象。
Cookie对象提供了一种在Web应用程序中存储用户特定信息的方法。其关键特性是:将状态信息存储于客户端硬盘中(存在安全性和状态过期等问题),与用户相关,在一定时间内持久化存储,可以跨浏览器共享数据,需要被序列化,发生服务器与客户端的数据传输。例如,某些网站或论坛使用Cookie实现“记住我”功能。
Application对象与Session对象有很多类似之处,它们都可以在不同的ASP页而问共享信息。二者不同之处是,Application埘象是所有访问者公用的对象,它存储的信息和定义的事件能够为所有的访问者使用,而Session对象存储的信息和定义的事件只能为某一访问者专用。Application对象是一个应用程序级的对象,它包含的数据可以在整个Web站点中被所有用户使用,而且它还可以在网站运行期间持久地保存数据。Application经常用于统计网站访问人数。
依题意,会员登录某电子商务网站成功之后,要将会员信息进行临时保存,可以利用Session对象将会员信息临时存在Web服务器内存中,利用Cookie对象将会员信息临时存于客户端硬盘上。若要统计网站的访问人数,则可以使用Application对象来实现。
问答题 该商务网站后台商品管理中,需要对上架超过5年的商品执行删除操作,并弹出消息对话框,提示删除操作是否成功。请根据题目说明,将空缺的代码补充完整。
<%
connstr="server=127.0.0.1; database=______; uid=sa; pwd=sa"
set conn=______. createobj ect("adodb.connection")
conn.provider="sqloledb"
conn.open ______
sql="delete from ______ where datediff(year, sw ctime, ______)>5
dim a
conn.execute sql, a
if a>=1 then
response.write"<script>______('超过5年的商品已全部删除!')</Scrip>"
else
response.write"<script>______('删除失败!')</script>"
end if
%>
A.sw_Commodity B.alert C.window D.message.box
E.Server F.connstr G.getdate() H.getday()
I.CommodityBase J.conn
【正确答案】I(或CommodicyBase) E(或Server) F(或connstr) A(或sw_Commodity) G(或getdate()) B(或alert)
【答案解析】依题意,由题干说明给出的“数据库名为CommodityBase”等关键信息,可知(7)空缺处应填入的数据库名称为CommodityBase。
数据库连接对象(adodb.connection)用于与ODBC数据库建立连接,所有对数据库的操作均通过该连接进行。Adodb组件库的Connection类组件需使用Server.CreatObject方法来创建一个名为conn的对象,因此(8)空缺处应填写的内容是Server。
语句conn.open connstr用于打开数据库连接,即用数据库连接对象conn调用connstr中定义的连接字符串,以打开CommodityBase数据库连接。因此(9)空缺处应填入connstr。
SQL的删除操作是指从基本表中删除元组,其句法如下。
DELETE FROM基本表名
[WHERE 条件表达式]
其语义是从基本表中删除满足条件表达式的元组。删除语句实际上是“SELECT*FROM基本表名[WHERE条件表达式]”和DELETE操作的结合,每找到一个元组,就把它删除。WHERE子句中条件可以嵌套,也可以是来自几个基本表的复合条件。
若需要对上架超过5年的商品执行删除操作,则操作对象所在的基本表为商品表(sw_Commodity),即(10)空缺处应填入sw_Commodity。
判断某一商品上架时间(sw_ctime)距离当前时间的年份,则需使用datediff(year, sw_ctime,getdate())语句,即(11)空缺处应填入getdate()。
若需要弹出消息对话框,提示删除操作是否成功,则需要使用response.write"<script>alert('<相关提示信息>')</script>",即(12)空缺处应填入alert。