热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用ASP和SQL实现基于Web的事件日历

用ASP和SQL实现基于Web的事件日历
本文介绍如何建立基于Web的日历,同时为不熟悉Active Server Pages(ASP)、SQL和ADO的开发者提供建立Web站点的过程介绍,也为有经验的开发者提供了Web站点可伸缩性方面的技巧。 

随着网络应用的发展,基于Web的日历越来越受到人们的重视,对于显示诸如最后期限或日程安排之类的重要事件,或显示谁在什么时候休假,基于Web的日历都是有用的。本文描述了如何使用IIS和SQL Server内的ASP建立一个非常简单的基于Web的日历,并允许你与其他人共享你的日程表或管理一组人员的日历。 

建立SQL服务器端 

对Web日历而言,我们在服务器端仅需保存表明事件性质的一个文本字符串即可,字符串最长为100个字符。设计源代码如下: 

Calendar.sql
-- 创建表
create table Schedule
(
idSchedule smallint identity primary key,
dtDate smalldatetime not null,
vcEvent varchar(100) not null
)
go
-- 存储过程
create procedure GetSchedule (@nMonth tinyint, @nYear smallint)
as
select idSchedule, convert(varchar, datepart(dd, dtDate)) 'nDay', vcEvent
from Schedule
where datepart(yy, dtDate) = @nYear and datepart(mm, dtDate) = @nMonth
order by datepart(dd, dtDate)
go
create procedure AddEvent (@vcDate varchar(20), @vcEvent varchar(100))
as
insert Schedule
select @vcDate, @vcEvent 
go
create procedure DeleteEvent (@idSchedule smallint)
as
delete Schedule where idSchedule = @idSchedule
go  


设计ASP客户端 

下图是Web日历的主要用户界面,用户可以看到哪些事件是已安排的。另外,使用底部的链接可以在日历中按月前后翻动。 





ASP的实现代码如下: 

header.asp
<@ LANGUAGE="Vbscript" 
ENABLESESSIONSTATE = False %>
<%
' 目的:表头包括用来启动所有页的文件
' 还包括全局函数
Option Explicit
Response.Buffer = True
Response.Expires = 0
sub Doheader(strTitle)
%>    
   
   
   
   
   
   

Event Calendar


   

<%= strTitle %>


<%
end sub
function GetDataConnection()
dim oConn, strConn
Set oConn = Server.CreateObject("ADODB.Connection")
strConn = "Provider=SQLOLEDB; Data Source=adspm; Initial Catalog=TeamWeb; "
strConn = strConn && "User Id=TeamWeb; Password=x"
oConn.Open strConn
set GetDataConnection = oConn
end function 
%>  


利用ADO,我们可以很容易地将 ASP 页面与 SQL 数据库相连接。首先我们要创建一个到数据库的连接。为了获得记录集,我们要调用 Connection 对象的Execute方法,将希望执行的命令的文本字符串传入,一旦有了记录集,就可以在其中循环。header.asp 包含获得数据连接的函数,这意味着如果数据源有变化,我们只有一个位置需要编辑连接信息(服务器、用户和口令)。请注意,作为结果,我们必须在函数的末尾使用set命令传出新连接。 

优化性能 

ASP使建立Web页面变得十分容易,但如果想建立一个可以适应大量用户的站点,你就需要仔细考虑编码。下面笔者将为读者介绍增强基于Web日历可伸缩性的几种方法,这些方法也可用于提高任何基于ASP的Web站点的性能。 

1.SQL优化 

提高站点性能的一个简单方法是给 Schedule表的date字段添加一个索引,这样,它会在给定日期之间进行查找,因而将加快 GetEvents的存储过程。 

对于小型站点,我们可以将 SQL 与 IIS 安装在同一服务器上,一旦站点访问量开始增长,我们可将 SQL 移动到其自身的服务器上,当访问量进一步增长时,我们可以添加均指向同一 SQL 服务器的多个 IIS 服务器。如果 SQL 服务器的通信量过度增长时,还可以将数据分割到不同的服务器上,我们可以将奇数月份分配到一台服务器,将偶数月份分配到另一台服务器上,当然,这需要修改 header.asp 中的 GetDataConnection,以便它为你提供基于此月份的正确连接。 

2.ASP 优化 

ASP 解释的主要优化方法将是利用高速缓存页面,以便无需每次读取都对它们进行解释。做到这一点的最简单的方法是借助 ASP Application 对象。要做到这一点,你只需将HTML保存到含有月份和年份名称的应用程序变量(例如 Calendar07-2000)中。然后,当显示 Event Calendar 页时,你首先检查一下看看日历是否已经保存在应用程序变量中,如果是,则只需检索它,这种方式会大大加快网站的查询过程。下面的代码显示了这个工作过程: 

<>
ShowCalendar(nMonth, nYear)
<>
sub ShowCalendar(nMonth, nYear)
if Application("Calendar" && nMonth && "-" && nYear) = "" then
<>
Application("Calendar" && nMonth && "-" && nYear) = <>
End if
Response.Write Application("Calendar" && nMonth && "-" && nYear) 
End sub  


当然,在 Events.asp 页更改某个月份的事件时,你需要清空该月份的应用程序变量,以便反映这些事件的更改状况。 

安全性 

有几种方法可实现此站点上的安全性。对于 Intranet 站点,基于Windows NT的验证是最容易设置的,其原因是你的用户将很可能已经登录到网络。你可让所有用户查看 Event Calendar 页,但是只有管理员能访问Add/Remove Events 页。
推荐阅读
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • Linux环境变量$PATH的作用及使用方法
    本文介绍了Linux环境变量$PATH的作用及使用方法。$PATH是一个由多个目录组成的变量,用冒号分隔。当执行一个指令时,系统会按照$PATH定义的目录顺序搜索同名的可执行文件,如果有多个同名指令,则先找到的会被执行。通过设置$PATH变量,可以在任何地方执行指令,无需输入绝对路径。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
author-avatar
idc01
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有