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比较菜。

时间: 2024-09-11 09:41:27

asp也来玩三层?的相关文章

如何在ASP.NET中使用三层架构

  学ASP.NET都知道它的最经典的架构是三层架构,也是目前应用得最广泛的一种架构.以前说起三层架构大家都知道MVC架构,这是html开发中用得比较多的,现在AJAX主要就是用这种架构.大家ASP.NET的三层是指数据访问层,业务逻辑层和表示层,而且都知道数据访问层是用来访问数据的,业务逻辑层是用来处理一些系统的业务逻辑的,表示层就是把内容呈现出来给用户,与用户进行交互的.划分三层的好处就是每一层都是独立的,修改其中一层一般不会影响其他层的代码,这样就大大的方便了日后的维护和升级.它最大的缺点

asp。net关于三层连接数据库

连接数据库 在中间层访问数据库时,我想使用command方式从数据库读出数据放在datareader中,但是无法成功,请问各位有什么方法.(我不想用adapter方式)我的代码如下[WebMethod]public System.Data.SqlClient.SqlDataReader getdata() { System.Data.SqlClient.SqlDataReader reader ;//= new System.Data.SqlClient.SqlDataReader(); sql

asp.net用三层实现多条件检索示例

  三层将项目分为界面层,业务逻辑层和数据访问层,下面为大家介绍下asp.net如何用三层实现多条件检索,感兴趣的朋友可以参考下 众所周知,三层将项目分为界面层,业务逻辑层和数据访问层(以最基本的三层为例) 同样都知道,多条件检索其实就是根据用户选择的条件项,然后来拼sql语句 那么,既然要根据用户选择的条件项来拼sql语句,就肯定要在界面层接收用户的选择,这时候问题来了: 我是要在界面层拼sql语句吗,这么做完全没问题,功能也完全可以实现,可是这么一来,你是破坏了三层的原则了吗 那么还架三层做

asp.net的三层结构在编程的过程中怎么体现?

问题描述 asp.net的三层结构在编程的过程中怎么体现? 我理解的是:在"设计"处布局按钮什么的,在按钮的事件里写方法.主要以前见老师给的网上书店里还有什么book类,comment类了,我不是很理解,因为有文章说asp.net天然是三层,我理解的对吗?求大牛告知. 解决方案 关于ASP.NET的三层结构关于ASP.NET的三层结构ASP.NET中的三层结构 解决方案二: 其实三层不止是三层 我们都称作是三层架构而已 还有Model实体层 和Utility工具层 用于添加实体 你的B

asp.net三层架构 UI层引用问题

问题描述 asp.net改成三层架构时在UI层引用了BLL,也加了UsingBLL,写代码的时候没有任何问题,但是编译时说缺少引用....求大神指教,,马上就毕业答辩了 解决方案 解决方案二:看一下你的BLL版本.看看是否本web的.net版本要高.解决方案三:删掉重新添加引用

ASP跨服务器上传文件完美解决

服务器|解决|上传 如果你有两个空间,一个大而慢,另外一个小而快,或者其中一个不支持FSO,那么跨服务器上传文件这个问题就摆在你面前了,下面就是我在解决ylog.net里面的跨服务器上传文件的日记,这个问题看似简单,里面的细节问题却是非常有趣 前提条件,空间都必须支持ASP,上传文件的服务器支持FSO,下面的叙述中,diygame.com为存上传文件的服务器,ylog.net为网站服务器,即显示用户界面的服务器... 实现功能,文件上传,上传后在网页的文本区域自动加上对于图片的UBB码,为了清楚

ASP:关于UTF-8页面乱码的问题

问题|页面 有许多朋友问过我,为什么在ASP里指定了codepage为65001还经常显示乱码.才子在这里将这个问题详细解释一下,以免很多朋友再走弯路,甚至排斥UTF-8.如果你还不知道UTF-8是什么东东,那才子建议你先去搜索一下UTF-8的相关资料吧.UTF-8编码之所以被越来越多的人接受甚至喜欢,肯定是有道理的,在WEB2.0盛行的今天,在大谈多浏览器兼容的同时,不得不想到字符编码不同所造成的乱码现象同样需要得到很好的处理.....在N年以前,IE6以下的所有版本,只要没有安装相应的字库,

ASP动态网页下UTF-8页面乱码的解决方法

动态|解决|网页|页面 为什么在ASP里指定了codepage为65001还经常显示乱码.才子在这里将这个问题详细解释一下,以免很多朋友再走弯路,甚至排斥UTF-8. 如果你还不知道UTF-8是什么东东,那才子建议你先去搜索一下UTF-8的相关资料吧. UTF-8编码之所以被越来越多的人接受甚至喜欢,肯定是有道理的,在WEB2.0盛行的今天,在大谈多浏览器兼容的同时,不得不想到字符编码不同所造成的乱码现象同样需要得到很好的处理..... 在N年以前,IE6以下的所有版本,只要没有安装相应的字库,

转: ASP.NET高级应用 (2)

asp.net|高级 三层结构及其应用 概念及环境 ASP.NET中的三层结果开发方法,其实其思想跟Java的一样.Java中的三层架构为前端的html.Jsp.Servlet,中间层为JavaBean.EJB,后面为数据库服务器.而在ASP.NET中,前段为html.asp.aspx等,中间层为有.vb..cs等文件编译而成的.dll控件,后面为数据库服务器. 在我们的三层架构中,我们的数据库层通过中间层来连接以及操作,前端给中间层传递参数,并接受中间层的参数.在我们的ASP.NET中,我们主