网站首页 > ASP源码 > 其他类别 > ASP实现ActiveRecord数据查询更新 v1.0

ASP实现ActiveRecord数据查询更新 v1.0

软件大小:
125MB
软件语言:
简体中文
软件授权:
免费版
软件类别:
其他类别
更新时间:
2023-02-18 13:35:07
官方网站:
www.downcodes.com
  • 软件介绍
  • 软件截图

ASP实现ActiveRecord数据查询更新

引言:

用过PHP框架ThinkPHP或CI框架的同学,都知道这些框架自带的数据查询ActiveRecord用于查询数据和更新数据想到方便,

不单它们,很多PHP框架都支持ActiveRecord,省去了写过多繁琐的原生态SQL查询语句,项目维护更加方便。

现在我们也用在Asp代码上进行模拟.已经成功的应用于“基于AspBox框架的AppCore”的应用上。

应用核心代码是从AppCore里进行分离。

=================================================================

【一】:查询数据

a.获取结果:

查看输出SQL语句:Dao.getSQL()用法

别名Dao.lastSQL()

e.g.

Response.WriteDao.T("media").Top(10).lastSQL

Dao.Query()用法

dimrs

dimtb_prefix:tb_prefix=Dao.tbPrefix'数据表前缀

Setrs=Dao.Query("selecttop10id,namefrom@media").Result()

等同于:Setrs=Dao.Query("selecttop10id,namefrom"tb_prefix"media").Result()

Dao.List()用法

dimlist

list=dao.t("media").select("id,name").top(10).List()

注:list'返回一个二维数组

dimi,id,name

Fori=0ToUbound(list,2)

id=list(0,i)

name=list(1,i)

Response.Writeid":"name""

Next

Dao.Result()用法

别名Dao.GetRs()或Dao.Fetch()

dimRs

SetRs=Dao.T("media").select("id,name").top(10).Result()

ab.traceRs

DoWhilenotRs.eof

Response.WriteRs("id")":"Rs("name")""

Rs.MoveNext

Loop

Dao.Row(n)用法(n表示取得第n+1行数据)Dao.Row(0)表示取第一行数据

dimRs

SetRs=Dao.Query("selecttop10id,namefrom@media").Row(4)'获取第5行数据

IfNotRs.EofThen

Response.WriteRs("id")":"Rs("name")

EndIf

b.查询条件:

Dao.T()用法和Dao.From()用法等同

Dao.Select()用法和Dao.Field()用法等同

Dao.Where()用法与Dao.Find()用法:

注:Where用法和Find用法基本差不多,都是条件筛选数据。

Find用法更灵活,可以用Dao.Find("1,3,5")来查询自动编号(id)为1,3,5的数据

Dao.Find("1,3,5")又可以用以下写法:

Dao.Find(Array(1,3,5))

Dao.Find("idin(1,3,5)")

Dao.Where("idin(1,3,5)")

Dao.Where("id=1orid=3orid=5")

Dao.Limit()用法:

模拟mysql的limit(offset,rows)用法

用法:

limit(0,0)取全部数据(第1条(0+1=1)数据开始到结束的数据)

limit(0,1)取从(第1条(0+1=1)数据开始的1条数据,即:第1~1条)(共1条)

limit(3,0)取从(第4条(3+1=4)数据开始到结束的数据,即:第4~最后一条)

limit(2,5)表示第3条(2+1=3)数据开始的5条数据,即:第3~第7条)(共5条)

limit(1,2)表示第2条(1+1=2)数据开始的2条数据,即:第2~第3条)(共2条)

limit(4,6)可以这么算:表示第4+1=5条到第4+6=10条)(共6条)

@注意:Limit用法只能用于查询,不能用于Rs数据更新!

Dimrs

Setrs=Dao.T("test").Where("pid=1").Limit(0,5).Fetch()

附,查询示例:

Dao.T("test").field("id,name").where("id>0").order("createtimedesc,iddesc")

Dao.T("test").select("id,name").top(10)

Dao.T("test").select("id,name").order("Rnd(ID)")

Dao.t("user").where("id<>{rq:id}andemail='{rq:email}'").find("id>5").result()

limit条件查询

Setrs=Dao.T("media").field("id,name").limit(1,5).Fetch()

完整的查询示例:

dimsql

sql=dao.select("id,name").from("media").where("id>10").join("table2").on("table2.cid=user.cid").order("iddesc,cidasc").group("id").having("id>5").union("select*fromtablexx").getSQL

===============

【二】:修改数据

添加数据:Dao.Add()

修改数据:Dao.Update()或Dao.Set()

删除数据:Dao.Del()或Dao.Delete()

智能保存数据(添加或修改):Dao.Save()

更新某个字段值Dao.setField()

Dao.AffectedRows()或Dao.affRows()返回影响的行数

dimo_ds,arr(5),str

Dao.t("user").where("id=14").del()

Dao.t("user").delete("1,3,5")

Dao.t("user").where("id=13").set(Array("username:55"))

Dao.t("user").where("id=13").setField("name","aaa1111")

Dao.query("update@usersetusername='ttt'whereid<7").exec()

Dao.query("delete*from@userwhereid>7").exec()

response.writeDao.AffectedRows()'影响的行数

Dao.t("user").add(Array("username:tttt","password:5fe84ad35fb5f95b","email:[email protected]"))

arr(0)="id>5"

arr(1)="time>#1986#"

arr(2)="oradd=555"

response.writedao.t("media").where(arr).lastSQL()

Seto_ds=Server.CreateObject("scripting.Dictionary")

o_ds("id")="15"

o_ds("name")="sss"

o_ds("ddds!=")="dsd"

response.writedao.t("media").where(o_ds).lastSQL()

response.writedao.t("media").Find(o_ds).lastSQL()

软件截图