金色的骷髅 发表于 2015-1-16 22:07:43

ASP教程之简化你的ASP编写事情 (原数据库操纵类c...

我想详细了解ASP整站代码与PSP整站代码有什么优缺点,那个更好,更安全,更用容易维护,和管理。。。起首,以为ASP已过期的人,请疏忽此帖,感谢。俺这里只是供应一种思绪,但愿能给良多还在进修和利用ASP的伴侣一种便利。只管俺如今也很罕用ASP了,但俺信任只需能满意使用,就没有甚么过期不外时的,大概它的言语没那末初级,但做出来的使用纷歧定就初级,呵呵。

EasyASP是一个便利疾速开辟ASP的类,个中包括了一个数据库把持类(原clsDbCtrl.asp,对原代码作了优化和修正,包括对数据库的各种操纵及存储历程的挪用,全体封装在Easp.db中,利用起来会更便利,挪用也更复杂)。而Easp类中供应了大批有用的ASP通用历程及办法,能够简化年夜部分的ASP操纵。今朝只供应了VBScript版,JScript版未来大概会供应。具体申明请下载匡助手册,内里有十分具体的利用办法申明及源码典范。

后续更新请存眷:http://code.google.com/p/easyasp/

=================================================================
EasyASPv1.5(2008-10-22更新)

新增功效:
1、将数据库把持类(原clsDbCtrl.asp)封装进Easp类,均经由过程Easp.db挪用,也可自力利用。
2、新增MSSQL存储历程挪用办法,可天真挪用存储历程并前往前往值、纪录集及出参。
3、新增db.CreatConn办法,能够依据自界说的毗连字符串联接数据库。
4、新增db.Json办法,能够将数据库纪录集按Json格局输入。
5、新增db.Rand和db.RandStr办法,能够天生一个不反复的随机数大概随机字符串
6、新增数据库操纵各办法的简写办法,更勤俭誊写代码工夫。
7、在Easp类中新增大批的有用办法,如平安猎取值、防Sql注进、服务器端表单考证等。

别的更新:
1、优化db.AutoId主动猎取编号,效力进步20倍以上,数据量越年夜越分明。
2、修正db.OpenConn数据库毗连办法,更切合一样平常形貌习气。
3、修正db.GetRecord取纪录集办法,参数更少。修改前提利用数组报错的Bug。
4、修正并优化db.DeleteRecord删除纪录办法,今朝只要两个参数了。
5、修正了毛病调试办法,增添Debug全局属性把持毛病显现。

更新申明:
之前写了一个clsDbCtrl.asp数据库把持类(《ASP操纵数据库的类,让数据操纵变得复杂》),收到一些反应,另有伴侣发来邮件告知我一些改善的办法,很感激他们。而我在原帖的跟帖中看到一条留言说“有记参数的工夫,SQL语句早都写完了”,更是间接指出了个中的为难,切实其实,只管VBS没有arguments属性,但用太多的参数也不是个好主张。以是我花了些工夫把这个类的很多代码都重写了一下,在包管功效只能更强不克不及更弱的条件下,一个办法最多只要3个参数了。别的新增添了一个挪用MSSQL存储历程的办法,能够天真的挪用存储历程并依据必要前往一个或多个纪录集、输入参数及前往值,固然,吸收教导了,这个办法只要两个参数。如今都封装在这个新的名叫EasyASP的家伙中了,望文生义,不过是想统统都复杂点。
别的另有一个更为难的,那就是VBScript并非面向工具的言语,以是这个类实在说穿了也只是一些历程和办法的封装,便利利用罢了,以是个中年夜部分的办法和历程都能够提出来独自利用。固然,假如有必要,也能够把它封装成wsc大概dll组件利用。

=================================================================
利用申明
=================================================================
1、利用办法:
(1)Easp类的一切挪用都已包括在easp.asp中,以是只必要在页首引进该文件,如:复制内容到剪贴板代码:

<!--#includefile="inc/easp/easp.asp"-->或:复制内容到剪贴板代码:

<!--#includevirtual="/inc/easp/easp.asp"-->(2)该类已实例化,无需再独自实例化,间接利用Easp.前缀挪用便可,如:复制内容到剪贴板代码:

Easp.wn("TestString")或Easp.db.AutoId("Table:ID")(3)如要同时操纵多个数据库,请实例化新的easpdb工具,如:复制内容到剪贴板代码:

Dimdb2:Setdb2=NewEasyASP_db
db2.dbConn=db2.OpenConn(0,dbase,server)2、参数商定:
(1)数组参数:因为VBScript没有arguments属性,不克不及利用静态参数,以是,在本类触及到数据库数据的代码中,利用了Array(数组)来到达这一效果。本类中的部分参数可使用数组(参数申明中有说明),但利用数组时应参照以下格局:复制内容到剪贴板代码:

Array("Field1:Value1","Field2:True","Field3:100")对,有点像json的格局,假如触及到变量,那就如许:复制内容到剪贴板代码:

Array("Field1:"&Value1,"Field2:"&Value2,"Field3:"&Value3)能够如许说,本类中的几近一切与数据库字段相干的内容都能够用以上的数组格局来设置前提大概是猎取内容,包含挪用存储历程要传送的参数。而这个类里最年夜的长处就是在利用时不必往思索字段的范例,在字段后跟一个冒号,接着跟上响应的值就好了。假如你常常手写ASP程序的话,你很快就会感觉到使用这类体例的魅力,除数据范例不必思索以外,它也很便利随时增加和删除前提。这里举个例子申明这个用法:
好比增加新纪录的办法:复制内容到剪贴板代码:

Easp.db.AddRecord"Table",Array("FieldsA:测试数据","FieldsB:"&Now(),"FieldsC:True")参数只要两个,一个是表名,另外一个就是如许的数组参数。假如要改动数据库布局,则修正下面的程序代码就十分复杂了。

(2)共用参数(用特别标记分开):也是思索到要只管削减参数,假如有些参数在良多时分都能够没有的话,那就没有需要专门为它增添一个参数。在本类里接纳了特别标记如冒号(http://www.ckuyun.com/分开一个参数中的多个值来到达传送多个参数的效果。举几个例子申明一下,同时也能够预览一下接纳本类的一些上风:

好比创建MSSQL数据库毗连工具的办法:复制内容到剪贴板代码:

SetConn=Easp.db.Open(0,"Database","User:Password@ServerAddress")很一览无余对不合错误,这里就用:和@分开了几个参数而放在统一个参数里了。别的假如是Access数据库有暗码则在第3个参数中输出就好了,没有别的参数了。
再好比猎取纪录集的办法:复制内容到剪贴板代码:

Setrs=Easp.db.GetRecord("Table:FieldsA,FieldsB,FieldsC:20","ID>10","IDDesc")个中第1个参数中包括了表名,要取的字段和要取的纪录数,由于字段和纪录数良多时分是能够省略的,以是俺干脆把参数也省略了,如许要记的参数要少良多滴。
再好比本类里有一个GetUrl()的猎取本页面地点的办法,良多中央都见过是吧,可是本类里这个办法带一个参数,经由过程这个参数能够获得良多了局,看例子:
好比本页面的实践地点为:复制内容到剪贴板代码:

http://www.domain.com/news/index.asp?type=public&feed=on&page=23接上去是利用分歧参数前往的了局:复制内容到剪贴板代码:

办法前往了局
GetUrl("")http://www.domain.com/news/index.asp?type=public&feed=on&page=23
GetUrl(0)/news/index.asp
GetUrl(1)/news/index.asp?type=public&feed=on&page=23
GetUrl("page")/news/index.asp?page=23
GetUrl("-page")/news/index.asp?type=public&feed=on
GetUrl(":")/news/?type=public&feed=on&page=23
GetUrl(":-feed,-page")/news/?type=public无需更多申明了吧,呵呵。本类中天真利用共用参数的中央另有良多,这也是EasyASP的一年夜特征,人人本人看手册吧。

办法和属性概览:
(1)数据库操纵:
属性:
Easp.db.dbConn(读写)设置和猎取以后数据库毗连工具
Easp.db.DatabaseType(只读)查询以后利用的数据库范例
Easp.db.Debug(读写)设置和查询毛病调试开关
Easp.db.dbErr(只读)查询毛病信息
办法:
Easp.db.OpenConn依据模板创建数据库毗连工具
Easp.db.CreatConn依据自界说字符串创建数据库毗连工具
Easp.db.AutoID依据表名猎取主动编号
Easp.db.GetRecord依据前提猎取纪录集
Easp.db.wGetRecord输入猎取纪录集的SQL语句
Easp.db.GetRecordBySQL依据自界说SQL语句猎取纪录集
Easp.db.GetRecordDetail猎取某一纪录的具体信息
Easp.db.AddRecord增加一条新的纪录
Easp.db.wAddRecord输入增加新纪录的SQL语句
Easp.db.UpdateRecord依据前提更新纪录
Easp.db.wUpdateRecord输入更新纪录的SQL语句
Easp.db.DeleteRecord依据前提删除纪录
Easp.db.wDeleteRecord输入删除纪录的SQL语句
Easp.db.ReadTable依据前提猎取指定字段数据
Easp.db.Json依据纪录集天生Json格局数据
Easp.db.doSP挪用一个存储历程并前往多种数据
Easp.db.Rand天生一个不反复的随机数
Easp.db.RandStr天生一个不反复的随机字符串
Easp.db.C封闭纪录集并开释资本

(2)字符串处置:
Easp.w输入字符串
Easp.wn输入字符串和一个HTML换行("<br/>")
Easp.we输入字符串并停止程序
Easp.isN判别字符串是不是为空值
Easp.js输入JavaScript代码
Easp.alert弹出js动静框并前往上页
Easp.alertUrl弹出js动静框并跳转到新页
Easp.jsEncode转换字符串为平安的JavaScript字符串
Easp.CutString截取字符串并以自界说标记取代被截部分
Easp.HtmlEncodeHTML加码函数
Easp.HtmlDecodeHTML解码函数
Easp.HtmlFilter过滤HTML标签
Easp.RandStr天生指定长度的随机字符串
Easp.R猎取Request值并转换为SQL平安字符串
Easp.Ra平安猎取Request值并在毛病时弹出js动静框
Easp.Test依据正则表达式考证数据正当性

(3)工夫日期处置:
Easp.DateTime格局化工夫日期
Easp.DiffHour前往一个日期工夫变量和如今比拟相差的小时数
Easp.DiffDay前往一个日期工夫变量和如今比拟相差的天数
Easp.GetScriptTime依据工夫戳前往准确到毫秒的剧本实行工夫

(4)数字处置:
Easp.Rand天生一个随机数
Easp.toNumber转换数字为指定小数位数的格局
Easp.toPrice转换数字为泉币格局
Easp.toPercent转换数字为百分比格局

(5)Cookie及Application处置:
Easp.SetCookie设置一个Cookies值
Easp.GetCookie猎取一个Cookies值
Easp.RemoveCookie删除一个Cookies值
Easp.SetApp设置一个Application值
Easp.GetApp猎取一个Application值
Easp.RemoveApp删除一个Application值

(6)别的:
Easp.IfThen判别三元表达式
Easp.rr服务器端跳转页面
Easp.GetUrl猎取以后页面的URI地点
Easp.GetIP猎取会见者IP
Easp.noCache设置页面不缓存
Easp.close封闭工具并开释资本
Easp.CheckForm服务器端表单考证分歧法弹出js动静框
Easp.CheckDataFrom考证提交数据来历
Easp.CheckDataFromA考证数据来历分歧法例弹出js动静框
Easp.CheckSql防SQL注进强考证
Easp.CheckSqlA防SQL注进强考证分歧法例弹出js动静框以下是援用片断:
Easp.db.doSP办法

挪用一个SQL存储历程并前往数据

语法

[obj=]db.doSP(spName:spType,spParams)

参数

obj
存储历程前往的值、输入参数汇合或纪录工具
spName
要挪用的存储历程称号
spType
要挪用的存储历程的范例,能够是以下值:
0大概省略-没有参数大概只要输出参数的存储历程
1大概"OUT"-带有输入参数的存储历程
2大概"RS"-没有输入参数且前往一个或多个纪录集的存储历程
3大概"ALL"-既有输入参数又前往一个或多个纪录集的存储历程
spParams
要传送给存储历程的输出或输入参数,如是数组应遵守"数组参数商定"(稍有分歧,请看示例)。
在数组中参数的称号中请遵守以下格局:
输出参数:@+参数名+冒号(:)+值
输入参数:@@+参数名
注重:参数的按次要同存储过程当中的按次完整分歧

正文

挪用此办法将挪用一个MSSQLServer的存储历程并可前往一个或多个纪录集、输入参数或前往值。前往的值多是工具、数组或字符串,具体请看以下的示例。

示例

因为存储历程内容分歧,前往数据的分歧,输出输入参数请求的分歧,以是从几种情形来看用此办法挪用存储历程:

1、没有输出输入参数,不前往纪录集的存储历程的挪用:
复制内容到剪贴板
代码:
DimmySP
mySP=Easp.db.doSP("myTestSP","")
Easp.wmySP’输入前往值
2、唯一输出参数,无输入参数,不前往纪录集的存储历程的挪用:
复制内容到剪贴板
代码:
mySP=Easp.db.doSP("myTestSP",Array("@param1:"&Value1,"@param2:"&Value2))
’大概用更复杂的体例,只把值作为Array参数的项目便可(仅使用于这一种情形):
’mySP=Easp.db.doSP("myTestSP",Array(Value1,Value2))
Easp.wmySP’输入前往值
3、有大概没有输出参数,有输入参数,不前往纪录集的存储历程的挪用:
复制内容到剪贴板
代码:
SetmySP=Easp.db.doSP("myTestSP:1",Array("@inParam1:"&Vlaue1,"@inParam2:"&Value2,"@@outParam1","@@outParam2"))
Easp.wnmySP("return")’输入前往值
Easp.wnmySP("@@outParam1")’输入指定的输入参数值
Easp.close(mySP)
4、有大概没有输出参数,无输入参数,只前往纪录集的存储历程的挪用:
复制内容到剪贴板
代码:
SetmySP=Easp.db.doSP("myTestSP:2",Array("@param1:"&Value1,"@param2:"&Value2))
WhileNotmySP.Eof’输入纪录集内容
Easp.wn"ID:"&mySP(0)
Easp.wn"Name:"&mySP(1)
mySP.moveNext()
Wend
Easp.db.C(mySP)
5、有大概没有输出参数,有输入参数,也要前往纪录集的存储历程的挪用:
复制内容到剪贴板
代码:
mySP=Easp.db.doSP("myTestSP:3",Array("@inParam1:"&Vlaue1,"@inParam2:"&Value2,"@@outParam1","@@outParam2"))
’mySP前往的将是一个数组,第一个元素是纪录集工具,第二个元素是参数和前往值
Dimrs:Setrs=mySP(0)
’这里能够操纵rs纪录集工具了
’......
Easp.wnmySP(1)("return")’输入前往值
Easp.wnmySP(1)("@@outParam2")’输入指定参数值
再次提示注重:参数的按次要同存储过程当中的按次完整分歧。但参数名没有强迫请求要和存储过程当中一样,只是为了代码便于浏览,倡议你这么做(输入参数除外,由于这里必要两个@,存储过程当中只必要一个@)。

别的,假如你要前往多个纪录集工具,能够用这类体例来对猎取的多个纪录集举行操纵:
复制内容到剪贴板
代码:
Setrs=Easp.db.doSP("myTestSP:rs",Array("@param1:"&Value1,"@param2:"&Value2))
WhileNotrs.Eof’输入纪录集内容
Easp.wn"ID:"&rs(0)
Easp.wn"Name:"&rs(1)
Easp.wn"-----"
rs.moveNext()
Wend
Easp.wn"====NextRecordset===="
Setrs=rs.NextRecordset()’猎取下一个纪录集
WhileNotrs.Eof
Easp.wn"ProductID:"&rs(0)
Easp.wn"Photo:"&rs(1)
Easp.wn"-----"
rs.moveNext()
Wend
Easp.db.C(rs)优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件

莫相离 发表于 2015-1-18 20:50:29

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

小妖女 发表于 2015-1-25 17:39:00

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

小女巫 发表于 2015-2-3 12:17:48

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

金色的骷髅 发表于 2015-2-8 22:30:44

另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)

冷月葬花魂 发表于 2015-2-26 12:33:04

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

乐观 发表于 2015-3-8 15:15:25

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了

admin 发表于 2015-3-16 03:31:24

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

飘灵儿 发表于 2015-3-22 19:42:05

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
页: [1]
查看完整版本: ASP教程之简化你的ASP编写事情 (原数据库操纵类c...