摘 要 ASP.NET2.0编程技术正是得益于万维网Web通信的快速、简洁等独特优势,逐渐被大多数程序员和管理者接受和青睐。本文试以一个简单的企业应用实例,阐述ASP2.0技术的优点和编程技巧,通过应用的Web控件详细说明如何传递数据、操作数据库,包括:连接、查询、插入、删除、更新等,并实现了自动化无闪刷新。系统由笔者独立开发,已通过测试并投入实际应用,获得了较好的评价。
关键词B/S结构;AJAX技术;OLEDB数据库引擎;网页局部无闪刷新;记录集自动刷新;JavaScript语言;动态数据绑定控件;GridView控件。
“B/S”是英文Browser/Server的缩写,即:浏览器/服务器模式结构。随着Internet和Intranet的Web模式诞生,B/S这种基于网络存储结构的读取访问模式也应运而生。它的客户端是Windows操作系统的浏览器,大多数功能放在服务器端运行,简化了系统的开发、维护和使用。其最显著优点是,只要计算机联网,用户不必安装任何客户端程序就能进入系统,客户端实现了零维护,系统功能扩展更加方便。通过B/S结构,用户界面完全通过万维网WWW浏览器操作,少量任务在客户端实现,主要事务逻辑由服务器处理,系统效率极高。
随着B/S框架的普及应用,很大程度上推动了AJAX技术的发展。AJAX解释为异步JavaScript和XML,是一种创建交互式网页应用的网页开发技术。最大优点在于能在不更新整个页面的前提下操作数据,使Web应用程序更为迅捷地回应客户指令,避免了网络上发送没有任何变化的信息。它的程序在客户端电脑进行处理,增加了交互性,关键是可以局部实时刷新,进行无刷新请求数据处理,从而实现局部交换客户端和服务器的数据。尤其针对数据库记录的检索,可以避免整个网页的刷新闪动,虽然是和服务器的数据库进行数据交换,但用户永远感觉是在客户端执行操作,迅速直接。进而引用AJAX的Timer定时控件,可达到客户端记录集自动无闪刷新。
OLEDB就是对象链接和嵌入数据库,它位于ODBC层与应用程序之间。先进的ADO连接数据库基本分为三类:SYSTEM DSN Connection,DSN-LESS Connection 和 OLEDB Connection。SYSTEM DSN 和 DSN-LESS Connection 都是通过 ODBC 与数据库进行连接,效率不是特别高,因为ODBC要通过自己的ODBC Provider、 ODBC自身以及Driver三层才能连接;然而OLE DB直接通过自己的Provider连接到数据库。所以,OLE DB方式更直接,连接数据库比ODBC快,检索数据更快,服务器端的游标性能得到提升。
一、用户登录
通过客户端的JavaScript语言,判断客户页面输入字符的有效性;使用OlEDB数据库引擎打开Access数据库,检查用户和密码是否合法。
1.利用Java语言在客户端检查输入的字符是否合法。
HTML语言:
<script language="javascript">
<!--
function IsEmpty() //客户端检查是否输入字符
{
//获得输入的用户名
var name=document.getElementById("txtUserID");
if(name.value=="")
{
alert("用户不能为空!");
name.focus();
return false;
}
//获得输入的密码
var pwd=document.getElementById("txtPwd");
if(pwd.value=="")
{
alert("密码不能为空!");
pwd.focus();
return false;
}
return true;
}
C#语句:
protected void Page_Load(object sender, EventArgs e)
{
//设置控件焦点函数
setFOCUS();
//若首次打开网页,执行以下语句
if (!Page.IsPostBack)
{
//“登录”按钮“点击”事件调用IsEmpty()函数
this.btLogin.Attributes.Add("onclick", "javascript:return IsEmpty();");
//“退出”按钮加入关闭确认提示 this.btExit.Attributes.Add("onclick", "window.close()");
}
}
//刷新网页,焦点指向文本框
protected void setFOCUS()
{ string script = "<script language='JavaScript'> document.getElementById('txtUserID').focus();</script>";
Page.RegisterStartupScript("", script);
}
2.通过OlEDB方式动态连接数据库,判断用户名和密码是否合法。
Web.config的<configuration>内定义数据库连接字符串
<appSettings>
<add key="connStr" value="provider=Microsoft.Jet.oledb.4.0;data source=|DataDirectory|\dinner.mdb;"/>
</appSettings>
C#语句:
using System.Data.OleDb; //引入数据命名空间
protected static string connStr = ConfigurationSettings.AppSettings["connStr"]; //引用数据库连接字符串
protected void subLogin() //登录验证过程
{
string userID = Request.Form["txtuserID"];
string userPWD = Request.Form["txtPWD"];
OleDbConnection connDB = new OleDbConnection(connStr); //OleDb数据链接的初始化
connDB.Open(); //打开数据库连接
string strSql="select user_id,user_pwd,user_nam,UI.dept_id as dept_id,dept_nam,level_id from user_info UI,dept_info DI where UI.user_id='" + userID + "' and UI.dept_id=DI.dept_id";
OleDbCommand cmd=new OleDbCommand(strSql,connDB); //执行查询语句
OleDbDataReader drd=cmd.ExecuteReader();
if (drd.Read()) //查出此用户
{
if (userPWD == Convert.ToString(drd["user_pwd"])) //密码正确
{
//赋值给SESSION变量,全局使用
Session["userID"] = Convert.ToString(drd["user_id"]);
Session["userNam"] = Convert.ToString(drd["user_nam"]);
Session["deptID"] = Convert.ToString(drd["dept_id"]);
Session["deptNam"] = Convert.ToString(drd["dept_nam"]);
string levelID = Convert.ToString(drd["level_id"]);
if (levelID == "IN")
Response.Redirect("choice.aspx"); //订餐网页
else if (levelID == "AD")
Response.Redirect("submit.aspx"); //审核网页
}
else
Response.Write("<script language=javascript>window.alert('密码错误!');</script>");
}
else
Response.Write("<script language=javascript>window.alert('无此用户!');</script>");
connDB.Close(); //关闭数据库连接
}
|