数据持久层在所有的系统中都存在。对于小型或者中型的ASP应用,这一点往往不受重视。这篇文章试图改善这一现状,以一种简单的方式提供了简化调用ADO相关对象的方法。这种方法的思想可以延伸到其他编程语言,只要这种语言稍微具备一点点面向对象的思想,那么本篇文章将使你收益。
你还在使用ASP吗?我知道ASP虽然被很多高级的企业级应用抛弃,但是像我一样靠ASP起家的开发者,或者开发一些简单WEB应用的开发者,一定在某些时候还在考虑ASP。它简单,容易使用。在访问数据库方面,通过ADO也能够无所不能。然而使用ADO稍微复杂了一点。如果你还在老老实实的、重复了一遍又一遍的编写下面的代码或者看到别人编写这样的代码,那么你一定要阅读这篇文章。这篇文章将会彻底颠覆以往你对ASP的观念,带你进入一个新的世界。
Set rs = Server.CreateObject("ADODB.RecordSet")
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open SOMEDB
rs.Open SomeSQL_OR_Some_Table, conn
While Not rs.EOF
' Do operations...
rs.MoveNext
Wend
...
每个这样的需求都要这样写,你烦不烦?
引入POAsp
什么是POASP? 就是Persistence Object for ASP的缩写。顾名思义,这个小型的library想将面向对象的观念引入到ASP中来,同时尽可能以尽可能简单的方式使用。考虑这样的场景,要插入一条记录: 上面这段代码我想每个做ASP的人都很熟悉。那么看看采用了POASP的代码: 两者的不同,相信大家都能看出来了。
比较项目 插入数据:
ADO实现
Set rs = Server.CreateObject("ADODB.RecordSet")
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open SOMEDB
rs.Open <TableName>, conn
rs.AddNew
rs("Field1") = Value1
rs("Field2") = Value2
...
rs.Update
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
POASP实现
Dim poasp, po
Set poasp = New POAsp
Set po = New POAspObject
po.Init "对象名称", "对应的表名", "主键字段", "要进行操作的字段列表"
po.SetProperty "Field1", Value1
po.SetProperty "Field2", Value2
...
poasp.InsertObject(po)
比较项目删除数据:
ADO实现
Set rs = Server.CreateObject("ADODB.RecordSet")
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open SOMEDB
conn.Execute "delete from TableName where id=SomeID"
conn.Close
Set rs = Nothing
Set conn = Nothing
POASP实现
Dim poasp, po
Set poasp = New POAsp
Set po = New POAspObject
po.Init "对象名称", "对应的表名", "主键字段", "要进行操作的字段列表"
poasp.DeleteObject(po, SomeID)
比较项目更新数据:
ADO实现
Set rs = Server.CreateObject("ADODB.RecordSet")
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open SOMEDB
conn.Execute "update TableName set field1=Value1, ... where ID=SomeID"
conn.Close
Set rs = Nothing
Set conn = Nothing
POASP实现
Dim poasp, po
Set poasp = New POAsp
Set po = New POAspObject
po.Init "对象名称", "对应的表名", "主键字段", "要进行操作的字段列表"
po.SetProperty "Field1", Value1
po.SetProperty "Field2", Value2
...
poasp.UpdateObject(po, SomeID)
比较项目读取数据:
ADO实现
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open SOMEDB
Set rs = conn.Execute "Select Field... from TableName where ID=XXX"
If Not rs.EOF
Value1 = rs("Field1")
Value2 = rs("Field2")
...
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
'在别处使用Value1, Value2...
POASP实现
Dim poasp, po
Set poasp = New POAsp
Set po = New POAspObject
po.Init "对象名称", "对应的表名", "主键字段", "要进行操作的字段列表"
Set myPo = poasp.LoadObject(po)
'myPo就是从数据库中读出的对象
'可以在后面的程序中用myPo.GetProperty("FieldName")进行读取
怎么样?是不是一种被解放的感觉?
ASP数据持久层抽象
原创文章如转载,请注明:转载自悠悠博客 [ http://www.ajaxstu.com/ ]
相关文章:
- Aspjpeg入门详解(2007-11-26 4:56:2)
- ASP操作Excel常见错误(2007-11-15 4:39:21)
- 同一个用户不允许同时登陆两次(2007-11-15 1:17:43)
- Cookie,Session,Application封装(2007-11-13 6:29:1)
- 罗列全部session和application(2007-11-12 6:26:16)
- 访问和更新Cookies集合(2007-11-11 1:42:29)
- asp中cookie使用示例(2007-11-7 3:2:28)
- ASPImage组件制作水印的过程(2007-11-4 5:10:36)
- asp重定向-response.redirect和server.transfer(2007-10-24 9:18:30)
- 一个模板类(2007-10-22 3:29:7)
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
