您当前的位置: 首页 > 网站编程 > ASP教程 > asp也来玩三层?

asp也来玩三层?

作者:不详 来源:网络 发布时间: 2011-03-11 10:14 点击:
最近想玩玩asp,怀念一下,想到在asp里用javascript的脚本,js的一些东西似乎比较有趣。实际上也就写了两个简单的类,一个DbHelper,一个BusinessRules,分得不是那么明确。 DbHelper中实际上只有5个方法: Open(connectionString);//打开数据连接。connectionString:

asp也来玩三层?

  最近想玩玩asp,怀念一下,想到在asp里用javascript的脚本,js的一些东西似乎比较有趣。实际上也就写了两个简单的类,一个DbHelper,一个BusinessRules,分得不是那么明确。
  
  DbHelper中实际上只有5个方法:
  
  Open(connectionString);//打开数据连接。connectionString:数据库连接字符串(可略,略则调用类中指定的默认连接字符串)。
  
  Close();//关闭数据连接。
  
  ExecuteNonQuery(sql);//执行SQL语句,[返回受影响的行数](中括号中的内容没实现,似乎有些问题)。
  
  ExecuteReader(sql);//返回一个数据记录集,当然,是与数据源断开的。
  
  ExecuteScaler(sql);//执行SQL语句,返回第一行第一列的数据。
  
  BusinessRules也只有几个简单的方法:
  
  GetEntity(conditions);//根据指定的查询条件取得单个实体。
  
  Insert(entity,identity);//将单个实体插入数据库。identity:如果传入主键列名,则插入数据后实体的主键属性会得到数据库中对应的主键值。
  
  Update(entity,conditions);//将单个实体更新到数据库,conditions:更新条件。
  
  Delete(conditions);//按指定的条件删除数据。(参数略则删除全部数据)
  
  GetList(num,conditions,sortOrder);//取得数据列表。num:指定数量,0表示取符合条件的全部数据。conditions:查询条件,sortOrder:排序方式。(所有参数可略)
  
  GetPageList(pageIndex,pageSize,conditions,sortOrder);//取得分页数据列表。conditions:查询条件(可为空),sortOrder:排序方式(必须)。
  
  要用的时候直接就可以了。
  
  怎么用呢:
  
  假设我们有一个评论表Comment。
  
  有以下字段:
  
  ID:int,自增字段。
  
  Title:nvarchar,标题。
  
  Body:nvarchar,内容。
  
  UserID:int,发表评论的用户ID。
  
  State:bit,状态。
  
  CreateTime:DateTime,发表时间。
  
  示例代码:
  
  <@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
  
  <%
  
  var CommentBLL=new BusinessRules("Comment");//参数Comment是表名.
  
  var entity=CommentBLL.GetEntity("id=1");//这样就得到了一个ID为1的评论记录了.
  
  for(var x in entity)//打印出实体的所有属性和值.
  
  {
  
  Response.Write(x+":"+entity[x]+"<br>");
  
  }
  
  //当然js有很多种取值方式:
  
  Response.Write("Title:"+entity.Title);//遗憾的是没有智能感知,怎么点也点不出属性来,呵呵.
  
  Response.Write("UserID:"+entity["UserID"]);
  
  //插入:
  
  var comment={
  
  Title:"Javascript Demo",
  
  Body:"Hello,Robot!",
  
  UserID:1,
  
  State:false,
  
  CreateTime:new Date().toLocaleString()
  
  }
  
  if(CommentBLL.Insert(comment,"ID"))
  
  {
  
  Response.Write("success!"+comment.ID);//插入数据后comment的ID就会得到数据库中自动递增的值.
  
  }
  
  //更新:延续用上面的实体吧
  
  with(comment)
  
  {
  
  ID=undefiend;//这个是自动递增的列,不能赋值,所以要删掉.
  
  Title+="-->update";
  
  State=true;
  
  }
  
  if(CommentBLL.Update(entity,"ID=1"))//假设要更新的ID为1.
  
  {
  
  Response.Write("success!");
  
  }
  
  //删除:
  
  if(CommentBLL.Delete("ID=1"))//删除ID为1的评论.
  
  {
  
  Response.Write("success!");
  
  }
  
  //取得数据列表:
  
  var list=CommentBLL.GetList(0,"Body like%博客园%","CreateTime Desc");//取得内容中包含"博客园"的数据列表.
  
  for(var x=0;x<list.length;x++)//打印列表.
  
  {
  
  Response.Write(x+"-->"+" Title:"+list[x].Title+"<br>");
  
  Response.Write(x+"-->"+" Body:"+list[x]["Body"]+"<br>");
  
  }
  
  //取得分页数据列表:
  
  var pageList=CommentBLL.GetPageList(1,10,null,"CreateTime Desc");//取得所有数据的第一页数据列表.
  
  //这里返回的数据会比GetList返回的数据多一个RecordCount属性.
  
  Response.Write("符合条件的记录总数:"+pageList.RecordCount+"<br>");
  
  //打印数据同上,略...
  
  %>
  
  只实现了一些简单的功能,估计问题也多多,只是兴趣来了随便写写,我比较火星,见得东西少,大家见怪不要怪。呵呵。GetPageList用的是MSSQL2005里的Row_Number()来分页的,不能通用,mssql2k/access改一下就行了。
  
  当然也可以弄得更强大,比如弄几个类来映射数据表/字段等等,不过没时间写那么多,有时间拿来做个简单的项目玩玩还可以。还是有些怀念asp的简单,虽然我asp比较菜。

分享到:
本文"asp也来玩三层?"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4