ASP中Js与Vbs的Request差别
早上逛蓝色时看到一个有趣的帖子,是关于ASP中使用Jscipt的一个小麻烦,楼主用request获取URL中的一个参数,如果没有传递该参数,那么将改参数设置默认值1。由于我之前用ASP一直都是用Vbs,对于Vbs而言这是个小儿科的判断,但楼主在用Jscript时确遇到了麻烦,程序无法判断request过来的参数为空,代码如下: Read more…
早上逛蓝色时看到一个有趣的帖子,是关于ASP中使用Jscipt的一个小麻烦,楼主用request获取URL中的一个参数,如果没有传递该参数,那么将改参数设置默认值1。由于我之前用ASP一直都是用Vbs,对于Vbs而言这是个小儿科的判断,但楼主在用Jscript时确遇到了麻烦,程序无法判断request过来的参数为空,代码如下: Read more…
1.记录集关闭之前再次打开:
————————————
sql=”select * from test”
rs.open sql,conn,1,1
if not rs.eof then
dim myName
myName=rs(”name”)
end if
sql=”select * from myBook”
rs.open sql,conn,1,1
————————————-
解决:在第二次rs.open之前先关闭 rs.close
或
set rs1=server.createobject
rs1.open sql,conn,1,1
2,用SQL关键字做表名或字段名
————————————-
sql=”select * from user”
rs.open sql,conn,1,1
————————————-
user为sql关键字
解决:改为
sql=”select * from [user]”
3,用锁定方式去进行update
————————————-
sql=”select * from [user]”
rs.open sql,conn,1,1
rs.addnew
或
rs(”userName”)=”aa”
rs.update
————————————-
当前记录集的打开方式为只读
解决:
改为
rs.open sql,conn,1,3
4,在查询语句中采用的对比字段值与字段类型不符
—————————————–
sql=”select * from [user] where id= ” & myID & ” ”
rs.open sql,conn,1,1
—————————————–
假设表中设计ID为数字型,那么些时出错。
解决:
sql=”select * from [user] where id=” & myID
5,未检查变量值而出错
—————————————–
sql=”select * from [user] where id=” & myID
rs.open sql,conn,1,1
—————————————–
假设myID变量此时值为null,那么sql将成为
sql=”select * from [user] where id=”
解决:
在前面加上
if isnull(myID) then 出错提示
6,未检查变量值类型而出错
—————————————–
sql=”select * from [user] where id=” & myID
rs.open sql,conn,1,1
—————————————–
假设id为数字型,myID变量此时值不为null,但为字符,比如myID此时为”aa”
那么sql将成为
sql=”select * from [user] where id=aa”
解决:
在前面加上
if isnumeric(myID)=false then 出错提示
这也可以有效防止 sql injection 漏洞攻击。
7,由于数据库文件所在目录的NTFS权限而引起的 不能更新。数据库或对象为只读”错误。
解决:
将数据库文件所在目录的NTFS权限改为所有用户可读写
ASP中很多函数,大家在学习函数时要重点掌握:函数名,函数功能,函数返回值和例题。
1.函數array()
功能:創建一個數組變量
格式:array(list)
參數:list 為數組變量中的每個數值列,中間用逗號間隔
例子:
結果: i 被賦予為數組
2.函數Cint()
功能:將一表達式/其它類型的變量轉換成整數類型(int)
格式:Cint(expression)
參數:expression 是任何有效的表達式/其它類型的變量
例子:
結果: 236
函數Cint()將字符”234″轉換 成整數234.如果表達式為空, 或者無效時,返回值為0;
3.函數:Creatobject()
功能:創建及返回一個ActiveX對象.
格式:Creatobject(obname)
參數:obname 是對象的名稱
例子:
結果:
4.函數Cstr()
功能:將一表達式/其它類型的變量轉換成字符類型(string)
格式:Cstr(expression)
參數:expression是任何有效的表達式/其它類型的變量
例子:
結果:函數Cstr()將整數 5 轉換 成字符”5″.
5.函數Date()
功能:返回當前系統(server端)的日期
格式:Date()
參數:無
例子
結果:05/10/00
6.函數Dateadd()
功能:計算某個指定的時間和
格式:dateadd(timeinterval,number,date)
參數:timeinterval是時間單位(月,日..); number是時間間隔值,date是時間始點.
例子:
結果:
11/4/99
3:34:45 PM
其中
“m” = “month”;
“d” = “day”;
如果是currentDate 格式,則,
“h” = “hour”;
“s” = “second”;
7.函數Datediff()
功能:計算某量個指定的時間差
格式:datediff(timeinterval,date1,date2[,firstdayofweek[,firstdayofyear]])
參數:timeinterval 是時間單位; date1,date2是有效的日期表達式,firstdayofweek,firstdayofyear 是任意選項.
例子:
結果:There are 150 days to millenium from 8/4/99.
8.函數day()
功能:返回一個整數值,對應于某月的某日
格式:day(date)
參數:date是一個有效的日期表達式;
例子lt;% =date(#8/4/99#) %>
結果:4
9.函數formatcurrency()
功能:轉換成貨幣格式
格式:formatcurrency(expression [,digit[,leadingdigit[,paren[,groupdigit]]]])
參數:expression 是有效的數字表達式;digit表示小數點后的位數;leadingdigit,paren,groupdigit是任意選項.
例子
結果34.35
10.函數Formatdatetime()
功能:格式化日期表達式/變量
格式:formatdatetime(date[,nameformat])
參數:date為有效的日期表達式/變量;nameformat是指定的日期格式常量名稱.
例子
結果:Wednesday,August 04,1999
21.函數Isnumeric()
功能:返回一個布爾值,判斷變量是否為數字變量,或者是可以轉換成數字的其它變量.
格式:isnumeric(expression)
參數:expression 是任意的變量.
例子:
結果: true.
22.函數Isobject()
功能:返回一個布爾值,判斷變量是否為對象的變量,
格式:isobject(expression)
參數:expression 是任意的變量.
例子:
結果: true
23.函數:Lbound()
功能:返回一個數組的下界.
格式:Lbound(arrayname[,dimension])
參數:arrayname 是數組變量,dimension 是任意項
例子:
結果:0
用ASP很久了,但是真正的精华还是没学多少,一下是ASP中类的创建和使用。
1,类文件DefineClass.asp:主要是类存放的文件,方便其它页面调用。
程序代码
<%
Class myClass ‘声明一个名为myClass的类
Private myClass ‘初始化类
Private Sub Class_Initialize
myClass=”This is an Example about Class learning.”
End Sub
Public Function Show() ‘定义一个Show函数
show=myClass
End Function
Public Sub PrintStr(param) ‘定义一个PrintStr方法
Response.write param
End Sub
End Class
%>
2,应用类的文件Tutorial.asp
程序代码
<%
Set ComeOn=New myClass ‘定义一个名为ComeOn的myClass对象实例
response.write ComeOn.Show
param=”Welcome to http://www.nextway.cn”
ComeOn.PrintStr(param)
%>
ASP中Split函数的用法
分割截取字符串
看几个例子就能理解了
mystr=”1,2,3,4,5″
mystr=split(mystr,”,”)
for i=0 to ubound(mystr)
response.write mystr(i)
next
‘返回值为123456
mystr=”xlei.net/http/student/x/index.asp”
mystr=split(mystr,”/http/student”)
for i=0 to ubound(mystr)
response.write mystr(i)
next
‘返回值为xlei.net/x/index.asp
mystr=”1批在2批在3批在4批是在5批在”
mystr=split(mystr,”批在”)
for i=0 to ubound(mystr)
response.write mystr(i)
next
‘返回值为1234批是在56
描述
返回基于 0 的一维数组,其中包含指定数目的子字符串。
语法
Split(expression[, delimiter[, count[, start]]])
Split 函数的语法有以下参数:
参数 描述
expression 必选。字符串表达式,包含子字符串和分隔符。如果 expression 为零长度字符串,Split 返回空数组,即不包含元素和数据的数组。
delimiter 可选。用于标识子字符串界限的字符。如果省略,使用空格 (”") 作为分隔符。如果 delimiter 为零长度字符串,则返回包含整个 expression 字符串的单元素数组。
count 可选。被返回的子字符串数目,-1 指示返回所有子字符串。
compare 可选。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。
设置
compare 参数可以有以下值:
常数 值 描述
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文本比较。
vbDatabaseCompare 2 执行基于数据库(在此数据库中执行比较)中包含的信息的比较。