網(wǎng)站建設(shè)ASP學(xué)習(xí)筆記
第一課:運(yùn)行環(huán)境
response.write("本代碼輸出信息")
response.write("本代碼輸出信息"):response.write("本代碼輸出信息")'多條語(yǔ)句放在同一行時(shí)要用:號(hào)分開(kāi).
第二課:變量
算術(shù)運(yùn)算符
+ 加
- 減
* 乘
/ 除
& 連接符
^ 求冪
\ 除法取整數(shù)
mod 除法取余數(shù)
第三課 數(shù)據(jù)的類型
變量必須以字母開(kāi)頭
變量長(zhǎng)度不能超過(guò)節(jié)55個(gè)字符
變量名字只可以使用字母數(shù)字和下劃線組合
時(shí)間型必須在前后加#號(hào)
cdbl 將字符串轉(zhuǎn)換為雙精度值
第四課: 判斷語(yǔ)句
語(yǔ)法
if 條件 then
條件成立執(zhí)行的代碼
else
條件不成立執(zhí)行的代碼
end if
第四課: 邏輯運(yùn)算 返回結(jié)果只有兩種true=真 false=假
and 與 英語(yǔ)意思"同時(shí)" 左右結(jié)果都為真才為真
or 或 英語(yǔ)意思"或者" 一個(gè)結(jié)果為真結(jié)果為真,兩邊都為假結(jié)果才為假。
not 非 英語(yǔ)意思"不同" 只對(duì)右邊的值進(jìn)行反轉(zhuǎn),否定一切。
第五課: 循環(huán)
asp最常用的兩程循環(huán)語(yǔ)句
do loop和
for next
語(yǔ)法:
for 循環(huán)變量=初值 to 終點(diǎn)值
循環(huán)體
next
do loop實(shí)例
<%
dim rs,sql
sql="select top 9 * from BigClass where BigClassName like '%網(wǎng)站%'"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
%>
<%
do while not rs.eof
response.write(" <a href=""?Sclass="&rs("BigClassName")&""" ><font color=""#ffffff"">"&rs("BigClassName"))&"</font></a>"
rs.movenext
loop
%>
第五課: 數(shù)組
語(yǔ)法
dim 數(shù)組名(元素?cái)?shù)量)
實(shí)例
dim a(4)
a(0)=95
a(1)=85
a(2)=85
a(3)=85
a(4)=79
for i=0 to 4
response.write("第"&(i++!) &"個(gè)學(xué)生的成績(jī)是"&a(i)&"<br>")
b=b+a(i)
next
response.write("平均成績(jī)是"&b/5)
多維數(shù)組用,號(hào)隔開(kāi)
第五課: 輸入和輸出
提交方式有post和get兩種
post方法
request.form("表單元素名")
<img style="CURSOR: hand" onclick=from3.submit() src="images/2/index_43.gif" name="btnsubmit" width="54" height="19" /> 圖片提交按鈕語(yǔ)法
<img style="CURSOR: hand" onclick=from3.reset() src="images/2/index_45.gif" name="btnreset" width="54" height="19" /> 圖片取消按鈕語(yǔ)法
get方法
request.querystring("地址欄參數(shù)名")
第六課: 函數(shù)
ucase()寫(xiě)轉(zhuǎn)大寫(xiě)
abs()返回?cái)?shù)字的絕對(duì)值
date()返回當(dāng)前系統(tǒng)日期
sin()返回某個(gè)角的正弦值
sqr()返回?cái)?shù)值的平方根
abs(number)求絕對(duì)值
now()獲取現(xiàn)在時(shí)間
fromatdatetime(date[,namedfromat])格式化時(shí)間
sin(number)取sin值
函數(shù)分為客戶端函數(shù)和服務(wù)端函數(shù)兩種
服務(wù)端函數(shù)用<% %>符號(hào)括起來(lái)
客戶端函數(shù)以下方式運(yùn)行
<script language="vbscript">
vbscript 客戶端腳本程序
</script>
第七課:自編函數(shù) '有返回值
語(yǔ)法
function 函數(shù)名([參數(shù)])
實(shí)瑞函數(shù)功能的語(yǔ)句代碼
函數(shù)名=需要返回的值(函數(shù)運(yùn)行結(jié)果)
end function
實(shí)例
function absadd(a,b)
c=a+b
absadd=abs(c) '取絕對(duì)值
end function
調(diào)用
a=15
b=-20
c=absadd(a,b)
response.write("abs(a+b)" & c)
dim 為變量聲明函數(shù)
第八課:子程序 '沒(méi)有返回值
語(yǔ)法
sub 子程序名([參數(shù)])
實(shí)現(xiàn)子程序功能的語(yǔ)言句代碼
end sub
實(shí)例
sub draw(n)
dim ch
for i=1 to n
ch=ch &"A"
response.write(ch)
response.write("<br>")
next
end sub
調(diào)用語(yǔ)法
caLL draw(5) 方法1
draw 5 方法2
第九課:對(duì)象與組件
asp有6個(gè)內(nèi)置對(duì)象
request 負(fù)責(zé)從用戶端接收信息
response 負(fù)責(zé)傳送信息給用戶
server 負(fù)責(zé)控制asp的運(yùn)行環(huán)境
session 負(fù)責(zé)存儲(chǔ)個(gè)別用戶的信息,以便重復(fù)使用
application 負(fù)責(zé)存儲(chǔ)數(shù)據(jù)以供多個(gè)用戶使用
objectcontext 可供asp程序直接配合microsoft transaction server (mts)進(jìn)行分散式的事務(wù)處理
1、request 對(duì)象
具有1個(gè)屬性
totalbytest 只允許讀,指定客房端在請(qǐng)求正文中發(fā)送的字節(jié)總數(shù)
具有多個(gè)集合
clientcertificate 存儲(chǔ)在發(fā)送到http請(qǐng)求中客戶端證書(shū)中的字段值 '使用https協(xié)議訪問(wèn)網(wǎng)頁(yè)時(shí)用
cookies http請(qǐng)求中被發(fā)送的cookies值
from http請(qǐng)求正文中表單元素的值
querystring http中查詢字符串中的變量的值
servervariables 預(yù)定的環(huán)境變量的值
方法
binaryread 檢索人客戶端發(fā)送到服務(wù)器作為post請(qǐng)求的一部分?jǐn)?shù)據(jù)
實(shí)例
response.write("你使用的瀏覽器是:" & request.servervariables("http_user_agent") & "<br>")
response.write("你的IP地地址是:" & request.servervariables("remote_addr") & "<br>")
response.write("你訪問(wèn)的網(wǎng)頁(yè)是:" & request.servervariables("url") & "<br>")
response.write("你訪問(wèn)原端口是:" & request.servervariables("server_port") & "<br>")
response.write("你的查詢字符串是:" & request.servervariables("query_string") & "<br>")
2、response 對(duì)象
屬性
buffer 表明頁(yè)輸出是否被緩沖 '必須放在網(wǎng)頁(yè)的第一行
cachecontrol 決定代理服務(wù)器是否能緩存asp生成的輸出 '指定輸出數(shù)據(jù)的類型
charset 將字符集的名稱添加到內(nèi)容類型標(biāo)題中
contenttype 指定響應(yīng)的http內(nèi)容類型
expires 在瀏覽器的緩存的頁(yè)面超時(shí)前,指定緩存的時(shí)間
expiresabsolute 指定瀏覽器上緩存頁(yè)面超時(shí)的日期和時(shí)間
lsclientconnected 表明客戶端是否與服務(wù)器斷開(kāi)
pices 將pics標(biāo)記的值添加到響應(yīng)標(biāo)題pics標(biāo)記字段中
status 服務(wù)器返回的狀態(tài)行值
方法
addheader 從名稱到值設(shè)置html標(biāo)題
appendtolog 在該請(qǐng)求的web服務(wù)器日志條目后添加字符串
binarywrite 將給出信息寫(xiě)入到當(dāng)前的http輸出中,并且不進(jìn)行任何字符集轉(zhuǎn)換
clear 清除任何緩沖的html輸出
end 停止處理asp文件并返回當(dāng)前的結(jié)果
flush 立即發(fā)送緩沖的輸出
redirect 將重指示的信息發(fā)送到瀏覽器,嘗試連接另一個(gè)url
write 將變量作為字符串寫(xiě)入當(dāng)前的http輸出
語(yǔ)法
response.buffer=true
response.redirect "http://" '跳轉(zhuǎn)網(wǎng)頁(yè)
response.Redirect("javascript:history.go(-1)") '返回上一頁(yè)
3、cookies 集合
實(shí)例
response.cookies("用戶")="小泥巴" 將cookies信息寫(xiě)到瀏覽器
response.write("你好" & request.cookies("用戶")) 從瀏覽器里讀取cookies
實(shí)例2
response.cookies("用戶")("姓名")="小泥巴"
response.cookies("用戶")("姓別")="男"
response.cookies("用戶").expires="2010-10-10 8:19" 設(shè)置過(guò)期時(shí)間
response.write("你好" & request.cookies("用戶")("姓名")) 從瀏覽器里讀取cookies
response.write("你好" & request.cookies("用戶")("姓別")) 從瀏覽器里讀取cookies
4、session 對(duì)象 功能存儲(chǔ)或跟蹤用戶數(shù)據(jù) 內(nèi)似于cookies 不同于session存儲(chǔ)位置是服務(wù)端,cookies存儲(chǔ)位置是客戶端
屬性
timeout 設(shè)置失效時(shí)間'以分鐘為單位
語(yǔ)法 session.timeout=分鐘數(shù)
sessionid 是每個(gè)session的代號(hào),它是由服務(wù)器產(chǎn)生的.
語(yǔ)法 長(zhǎng)整數(shù)變量=session.sessionid
abandon 刪除存儲(chǔ)的session信息
語(yǔ)法 session.abandon
創(chuàng)建 session
語(yǔ)法
session("session名")=值
實(shí)例
<% session("bookname")="fif asp多媒體教程" %>
獲取session的值
語(yǔ)法
變量=session("session名")
實(shí)例
<% book=session("bookname") %>
5、application 對(duì)象 類似于session對(duì)象不同點(diǎn)是對(duì)所有用戶都有效
語(yǔ)法
建立:
application("application變量名")=值
例: application("studio")="fif"
讀取:
變量=application("application變量名")
例: s=application("studio")
實(shí)例3
<%
application.lock 鎖定 由于application對(duì)象不能同一時(shí)間處理多個(gè)操作所以使用前要先鎖定
application("studio")="fif多媒體制作小組"
application.unlock 解鎖
%>
6、server 對(duì)象
屬性
scripttimeout 它表示超時(shí)值就是在腳本運(yùn)行超過(guò)穹所定義的時(shí)間后就作超時(shí)處理 '本代碼要放在網(wǎng)頁(yè)的最前面。
語(yǔ)法
server.scripttimeout=秒數(shù)
方法
createobject 創(chuàng)建一個(gè)activex組件實(shí)例 '使用本方法一定要在前面加上set關(guān)健字
mappath 將指定的虛擬路徑轉(zhuǎn)換為真實(shí)的路徑,這里的虛擬路徑指的是web服務(wù)器所建立的虛擬路徑。
htmlencode 將字符串應(yīng)用為html編碼
urlencode 將字符串應(yīng)用為url編碼
實(shí)例
createobject語(yǔ)法
set 對(duì)象實(shí)例名=server.createobject("組件名.組件類型")
<%
set conn=server.createobject("adodb.connection")
%>
mappath 語(yǔ)法使用實(shí)例
<%
path=server.mappath("/index.asp")
response.write(tath)
%>
htmlencode 語(yǔ)法
變量=server.htmlencode("字符串")
urlencode 語(yǔ)法
變量=server.urlencode("字符串")
例
resopnse.write(server.htmlencode("<a hrer=yyznz.com>指南針軟件</a>"))
7、組件
asp內(nèi)置組件
ad rotator 該組件可按用戶指定的播放順序,在同一頁(yè)上自動(dòng)輪換顯示各件廣告.
browser capabilities 該組件決定訪問(wèn)web站點(diǎn)的每個(gè)瀏覽器的性能、類型及版本.
database access 該組件提供用activex data object(ADO)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn).
content linking 該組件可動(dòng)態(tài)生成web頁(yè)內(nèi)容列表,并像書(shū)一樣按順序連接。
file assess 該組件提供對(duì)WEB服務(wù)器文件的輸入輸出訪問(wèn)。
fso 對(duì)象 '功能建立、讀取、刪除、修改文件。
創(chuàng)建方法
set 對(duì)象變量名=server.createobject("scripting.filesystemobject")
實(shí)例
set fs=server.createobject("scripting.filesystemobject")
FSO方法列表
方法:BuildPath
語(yǔ)法:對(duì)象名.BulidPath(路徑,文件名)
說(shuō)明:在路徑上添加文件名,如果有需要的話,會(huì)自動(dòng)加上\分隔符。
方法:CopyFile
語(yǔ)法:對(duì)象名.CopyFile(源路徑,目標(biāo)路徑[,是否覆蓋])
說(shuō)明:將一個(gè)或多個(gè)文件從源位置復(fù)制到目標(biāo)位置。源位置支持通配符,如果目標(biāo)路徑最后字符為\則認(rèn)為目標(biāo)路徑是目錄,是否覆蓋參數(shù)默認(rèn)值為T(mén)URE,如果目標(biāo)位置文件已經(jīng)存在,而是否覆蓋屬性設(shè)置為FALSE的話會(huì)出錯(cuò)。(關(guān)于是否覆蓋參數(shù)的說(shuō)明其它各處皆同)
方法:CopyFolder
語(yǔ)法:對(duì)象名.CopyFolder(源路徑,目標(biāo)路徑[,是否覆蓋])
說(shuō)明:將一個(gè)文件夾從源位置復(fù)制到目標(biāo)位置。
方法:CreateFolder
語(yǔ)法:對(duì)象名.CreateFolder(文件夾名)
說(shuō)明:創(chuàng)建一個(gè)文件夾。
方法:CreateTextFile
語(yǔ)法:對(duì)象名.CreateTextFile(文件名[,是否覆蓋[,是否為Unicode編碼]])
說(shuō)明:創(chuàng)建指定的文件,并返回TextStream對(duì)象,該對(duì)象可用于讀或?qū)憚?chuàng)建的文件。
方法:DeleteFile
語(yǔ)法:對(duì)象名.DeleteFile(文件名[,是否刪除只讀文件])
說(shuō)明:刪除指定文件,可以使用通配符,如果是否刪除只讀文件參數(shù)設(shè)置為T(mén)URE,則即便為只讀屬性也會(huì)被刪除,默認(rèn)值為FALSE。
方法:DeleteFolder
語(yǔ)法:對(duì)象名.DeleteFolder(目錄名[,是否刪除只讀文件夾])
說(shuō)明:刪除指定文件夾,可以使用通配符,如果是否刪除只讀文件夾參數(shù)設(shè)置為T(mén)URE,則即便為只讀屬性也會(huì)被刪除,默認(rèn)值為FALSE。
方法:DriveExists
語(yǔ)法:對(duì)象名.DriveExists(驅(qū)動(dòng)器名)
說(shuō)明:如果指定的驅(qū)動(dòng)器存在,則返回TURE,否則返回FLASH。
方法:FileExists
語(yǔ)法:對(duì)象名.FileExists(文件名)
說(shuō)明:如果指定的文件存在,則返回TURE,否則返回FLASH。
方法:FolderExists
語(yǔ)法:對(duì)象名.FolderExists(文件夾名)
說(shuō)明:如果指定的文件夾存在,則返回TURE,否則返回FLASH。
方法:GetAbsolutePathname
語(yǔ)法:對(duì)象名.GetAbsolutePathname(路徑)
說(shuō)明:從提供的路中返回完整且含義明確的路徑,支持通配符。
方法:GetBaseName
語(yǔ)法:對(duì)象名.GetBaseName(路徑)
說(shuō)明:返回一個(gè)字符串,該字符串包含路徑,最后一個(gè)部分的基本名,無(wú)擴(kuò)展名。
方法:GetDrive
語(yǔ)法:對(duì)象名.GetDrive(驅(qū)動(dòng)器名)
說(shuō)明:返回與指定驅(qū)動(dòng)器相對(duì)應(yīng)的Drive對(duì)象。
方法:GetDriveName
語(yǔ)法:對(duì)象名.GetDriveName(路徑)
說(shuō)明:返回一個(gè)包含指定路徑中驅(qū)動(dòng)器名的字符串。
方法:GetExtensionName
語(yǔ)法:對(duì)象名.GetExtensionName(路徑)
說(shuō)明:返回一個(gè)字符串,包含路徑最后一個(gè)組成部分的擴(kuò)展名。
方法:GetFile
語(yǔ)法:對(duì)象名.GetFile(文件路徑)
說(shuō)明:返回一個(gè)與指定路徑中某文件相應(yīng)的FILE對(duì)象。
方法:GetFileName
語(yǔ)法:對(duì)象名.GetFileName(文件路徑)
說(shuō)明:返回路徑中的文件名。
方法:GetFolder
語(yǔ)法:對(duì)象名.GetFolder(文件夾路徑)
說(shuō)明:返回一個(gè)與指定的路徑中某文件夾相應(yīng)的Folder對(duì)象。
方法:GetParentFolderName
語(yǔ)法:對(duì)象名.GetParentFolderName(文件夾路徑)
說(shuō)明:返回一個(gè)字符串,該字符串包含指定的路徑中最后一個(gè)組成部分的你文件夾。
方法:GetSpecialFolder
語(yǔ)法:對(duì)象名.GetSpecialFolder(參數(shù))
說(shuō)明:返回一個(gè)與特定的WINDOWS文件夾相對(duì)應(yīng)的FOLDER對(duì)象。參數(shù)的允許值是0(WindowsFolder)1(SystemFolder)2(TemporaryFolder)。
方法:GetTempName
語(yǔ)法:對(duì)象名.GetTempName()
說(shuō)明:返回隨機(jī)生成的臨時(shí)文件或文件夾的名稱,用于執(zhí)行要求臨時(shí)文件或文件夾的操作。
方法:MoveFile
語(yǔ)法:對(duì)象名.MoveFile(源路徑,目標(biāo)路徑)
說(shuō)明:將一個(gè)或多個(gè)文件從某位置移動(dòng)到另一個(gè)位置,支持通配符。
方法:MoveFolder
語(yǔ)法:對(duì)象名.MoveFolder(源路徑,目標(biāo)路徑)
說(shuō)明:將一個(gè)或多個(gè)文件夾從某位置移動(dòng)到另一個(gè)位置,支持通配符。
方法:OpenTextFile
語(yǔ)法:對(duì)象名.OpenTextFile(文件名[,訪問(wèn)類型[,是否創(chuàng)建不存在的文件[,文件讀寫(xiě)格式]]])
說(shuō)明:打開(kāi)一個(gè)文件,并且返回一個(gè)與其相關(guān)的TextStream對(duì)象,訪問(wèn)類型參數(shù)可以是ForReading(1 默認(rèn))、ForWriting(2)、ForAppending(8),當(dāng)是否創(chuàng)建不存在的文件參數(shù)值為T(mén)RUE時(shí)會(huì)創(chuàng)建不存在的文件,默認(rèn)值為FALSE,文件讀寫(xiě)格式允許值是:0 (默認(rèn),按照ASCII格式打開(kāi))、-1(按照UNICODE格式打開(kāi))、-2(用系統(tǒng)默認(rèn)格式打開(kāi))。
fso只有一個(gè)屬性
drives 取得驅(qū)動(dòng)器信息
8、textstream 對(duì)象
createtextfile 方法
語(yǔ)法: fso對(duì)象名.createtextfile(文件笱[,是否覆蓋[,是否為unicode編碼]])
說(shuō)明: 創(chuàng)建指定的文件,并返回textstream對(duì)象,該對(duì)象可用于讀或?qū)憚?chuàng)建的文件.
opentextfile 方法
語(yǔ)法: fso對(duì)象名.opentextfile(文件名[,訪問(wèn)類型[,是否創(chuàng)建不存在的文件[,文件讀寫(xiě)格式]]])
說(shuō)明: 打開(kāi)一個(gè)文件,并且返回一個(gè)與其相關(guān)的textstream對(duì)象,訪問(wèn)類型參數(shù)可以是forreading(1 默認(rèn))、forwriting(2)、forappending(8),當(dāng)是否創(chuàng)建不存在的文件參數(shù)值為true時(shí)會(huì)創(chuàng)建不存在的文件,默認(rèn)值為false,文件讀寫(xiě)格式允許值是:0(默認(rèn),按照ascll格式打開(kāi))、-1(接照unicode格式打開(kāi))、-2(用系統(tǒng)默認(rèn)格式打開(kāi)).
屬性列表
屬性名 語(yǔ)法 描述
atendofline object.atendofline 只讀屬性.在textstream文件中,如果文件指針指向行末標(biāo)記,就返回true,否則返回false
atendofstream object.atendofstream 只讀屬性.如果文件指針位于textstream文件末尾,則返回true,否則返回false
column object.column 只讀屬性.返回textstream文件中當(dāng)前字符位置的列號(hào)
line object.line 只讀屬性.返回textstream文件中當(dāng)前行號(hào)
方法列表
方法名 語(yǔ)法 描述
close object.close 關(guān)閉打開(kāi)的textstream文件
read object..read(字符個(gè)數(shù)) 從textstream文件中讀入指定數(shù)目的字符
readall object.readall 從textstream文件中讀出全部字內(nèi)容
readline object.readline 從textstream文件中讀入一整行字符
skip object.skip(字符個(gè)數(shù)) 讀textstream文件時(shí)跳過(guò)指定的數(shù)目字符
skipline object.skipline 讀textstream文件時(shí)跳過(guò)一行
write object.write(字符串) 向textstream文件中寫(xiě)入指定的字符串
writeline object.writeline([字符串]) 向textstream文件中寫(xiě)入指定字符串和換行
writeblanklines object.writeblanklines(行數(shù)) 向textstream文件中寫(xiě)入指定寫(xiě)入指定數(shù)目的新行
第十課: sql 語(yǔ)句
select 查詢語(yǔ)句
語(yǔ)法結(jié)構(gòu):
select [top 返回記錄條數(shù)] 字段表名/或者用*號(hào)顯示所有的字段 from 數(shù)據(jù)表序列 [where 條件表達(dá)式] [order by 排序字段表[asc/desc]] 'asc 表示正排序 desc 表示倒排序
模糊查詢 用like語(yǔ)句
語(yǔ)法: select * from info where i_name like '*小*' /實(shí)例講解查詢所有包含小字的記錄
具有兩個(gè)通配符
* 代表任意多個(gè)任意字符 可能有錯(cuò)
% 代表任意多個(gè)任意字符 最后修正
? 代表一個(gè)任意字符
實(shí)例:
select * from class
select c_id,c_name from class order by c_nn desc
select c_name,c_stu from class where c_stu>50 or c_stu<20
select top 5 c_name,c_stu from class where c_stu>30 and c_type=true and c_name like '*二班*' order by c_stu asc,c_type desc
select c_name,s_no,s_name from class,stu where c_id=s_cid and c_stu>20 and s_no like '?006*' order by s_no desc
SELECT DISTINCT Company FROM Orders '用distinct 列中僅選取唯一不同的值
SELECT TOP 50 PERCENT * FROM Persons '從 "Persons" 表中選取 50% 的記錄。
多表查詢實(shí)例 user表和info表
select * from user,info where user.u_id=info.i_uid
第十一課: 增加記錄
語(yǔ)法: insert into 表名 [(字段1[,字段2[,...[字段n]]])] values (字段1[,字段2[,...[字段n]]])
實(shí)例:
insert into class(c_name,c_stu,c_type) values('三年二班',45,false)
第十二課: 更新記錄
語(yǔ)法: update 表名 set 字段名1=表達(dá)式1[, 字段名2=表大式2..] [where 條件表達(dá)式]
update stu set s_age=s_age-1 where s_no like '?6*' and s_no like '???1*'
第十三課: 刪除記錄
語(yǔ)法: delete from 表名 [where 條件表達(dá)式]
實(shí)例
delete from stu where s_age>45 '刪除stu表中年齡大于45的數(shù)據(jù)
第十四課: ADO 組件
對(duì)象列表
connection 對(duì)象
command 對(duì)象
parameter 對(duì)象
recordset 對(duì)象
field 對(duì)象 查看字段
property 對(duì)象
error 對(duì)象
1、連接數(shù)據(jù)庫(kù)
'DSN連接數(shù)據(jù)庫(kù)方法
<%
set conn=server.CreateObject("ADODB.Connection")
conn.open "DSN=fifasp;UID=admin;PWD=;"
%>
'字符串連接數(shù)據(jù)庫(kù)方法
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.open "DRIVER=Driver do Microsoft Access (*.mdb);UID=admin;PWD=;DBQ="&Server.MapPath("fifasp.mdb")
%>
以文件形式調(diào)用數(shù)據(jù)庫(kù)
語(yǔ)法: <!-- #include file="filename" -->
2、寫(xiě)記錄到數(shù)據(jù)庫(kù)要到到 recordset 對(duì)象
方法1
set rst =server.CreateObject("ADODB.recordset")
方法2
set recordset=connection.execute(commandtext,recordsaffected,options)
例子:
set rst1=conn.execute("insert into user (u_user,u_code) values ('" & request.form("f_user") & "','" & request.form("f_code") & "')")
實(shí)例:
set rst =server.CreateObject("ADODB.recordset")
rst.open "select * from user where U_user'" & request.form("f_user") & "'",conn,1,1
if rst.recordcount>0 then 'recordcount訪回記錄條數(shù)
'判斷相同記錄有幾條,并進(jìn)行提示
response.write"用戶名:" & request.form("f_user") &"
已經(jīng)存在請(qǐng)重先輸入.
set rst=nothing 設(shè)置rst對(duì)象為空
conn.close 關(guān)閉這個(gè)對(duì)象
set conn=nothing 設(shè)置conn對(duì)象為空
response.end '結(jié)束代碼的執(zhí)行
else
Connection.begintrans 開(kāi)啟事務(wù)
'如果用戶名不存在則寫(xiě)入數(shù)據(jù)方法1
set rst1=conn.Execute("insert into user (u_user,U_code) values ('" & request.form("f_user")" & "','" & request.form("f_code") &"')")
rst.close
'如果用戶名不存在則寫(xiě)入數(shù)據(jù)方法2
rst.open "user",conn,1,3 '打開(kāi)數(shù)據(jù)庫(kù)
rst.addnew'插入數(shù)據(jù)到user表
rst("u_user")=request.form("f_user")
rst.update
rst.close
if err.number <>0 then
寫(xiě)入失敗信息
connection.rollbacktrans 取消事務(wù)更改并結(jié)束事務(wù)
else
寫(xiě)入成功信息
connection.committrans 保存事務(wù)更改并結(jié)束事務(wù)
end if
'獲取剛才插入的數(shù)據(jù)的自動(dòng)編號(hào)自段值,即U_id字段的值
set rst1=conn.execute("select @@identity as uid") '到得自動(dòng)編號(hào)字段的值
uid = rst1("uid")
rst.open "info",conn,1,3
rst.addnew
rst("i_uid")=uid
rst("i_name")=name
rst.update '更新數(shù)據(jù)表
rst.close
end if
判斷結(jié)束
set rst=nothing
conn.close
set conn=nothing
errors.count 用于獲得錯(cuò)誤對(duì)象的個(gè)數(shù)
errors.clear 用于清空錯(cuò)誤對(duì)象
errors.item() 到得集合中的error對(duì)象
語(yǔ)法 set err=connection.errors.item(error對(duì)象索引)
error.number 取得錯(cuò)誤代碼
error.description 取得錯(cuò)誤或警告發(fā)生的原因或者是描述
<% on error resume next %> '如果發(fā)生錯(cuò)誤就跳過(guò)錯(cuò)誤的代碼繼續(xù)向下運(yùn)行
錯(cuò)誤判斷:
set myerrors=conn.errors
if myerrors.count>0 then '大于0說(shuō)明有錯(cuò)誤
for i=0 to myerrores.count-1
response.write("錯(cuò)誤原因:" & "<br>")
next
end if
err對(duì)象 及使用方法
resopnse.write"錯(cuò)誤號(hào)" & err.number 用來(lái)取得出錯(cuò)代碼,如果不等0就說(shuō)明有錯(cuò)語(yǔ)信息.
response.write"錯(cuò)誤號(hào)" & err.description 用來(lái)取得出錯(cuò)信息
err.clear 用來(lái)清空出錯(cuò)信息
2、fields 集合 用于查字每個(gè)表的數(shù)據(jù)結(jié)構(gòu)
方法列表:
變量=recordest.fields.count 取得集合中包含的field對(duì)象數(shù)目
recordest.fields.refresh 重新取得fields數(shù)據(jù)集合中包含的field對(duì)象
set field=recordest.fields.item(index) 得到某一個(gè)field對(duì)象
set field=recordest.fields(index) 得到某一個(gè)field對(duì)象
屬性列表:
name 表示字段的名稱。
value 表示字段的值。
type 表示數(shù)據(jù)字段的數(shù)據(jù)類型。
attribute 表示字段的特性。
numericscale 表示數(shù)據(jù)字段允許存儲(chǔ)的數(shù)字個(gè)數(shù)。
precision 表示數(shù)據(jù)字段允許的最大數(shù)字。
actualsize 表示數(shù)據(jù)字段的數(shù)據(jù)長(zhǎng)度。
definedsize 表示數(shù)據(jù)字段在數(shù)據(jù)庫(kù)中所定義的長(zhǎng)度。
originalvalue 表示數(shù)據(jù)字段第一次啟動(dòng)或是在調(diào)用update方法前的值。
underlyingvalue 表示數(shù)據(jù)庫(kù)中field對(duì)象的當(dāng)前值。
方法列表
第十三課: 數(shù)據(jù)庫(kù)事務(wù)功能
Connection.begintrans 開(kāi)啟事務(wù)
connection.committrans 保存事務(wù)更改并結(jié)束事務(wù)
connection.rollbacktrans 取消事務(wù)更改并結(jié)束事務(wù)
第十四課: 會(huì)員管理
<%
set rst=server.createobject("adodb.recordset") 創(chuàng)建數(shù)據(jù)庫(kù)連接
sql="select * from user,info where u_id=i_uid" 聯(lián)合查詢語(yǔ)句
rst.open sql,conn,1,1 使用open方法執(zhí)行sql語(yǔ)句,并返回記錄集。
while not rst.eof
while not表示用while集合來(lái)輸出記錄集的記錄
用eof屬性來(lái)判斷指針是否位于最后一條記錄的后面,如果用bof可以判斷是否位于第一條記錄前
%>
<%
rs.movenext 循環(huán)記錄
loop
%>
實(shí)例
<%
exec="select * from guestbook"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>
這三句加在前面兩句的后面,第一句:設(shè)置查詢數(shù)據(jù)庫(kù)的命令,select后面加的是字段,如果都要查詢的話就用*,from后面再加上表的名字,我們前面建立的是不是一個(gè)gustbook表阿?第二句:定義一個(gè)記錄集組件,所有搜索到的記錄都放在這里面,第三句是打開(kāi)這個(gè)記錄集,exec就是前面定義的查詢命令,conn就是前面定義的數(shù)據(jù)庫(kù)連接組件,后面參數(shù)“1,1”,這是讀取,后面講到修改記錄就把參數(shù)設(shè)置為1,3,好了接下來(lái)我們讀取記錄。
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%do while not rs.eof%> 循環(huán)內(nèi)容開(kāi)始
<tr>
<td><%=rs("name")%></td>
<td><%=rs("tel")%></td>
<td><%=rs("message")%></td>
<td><%=rs("time")%></td>
</tr><%
rs.movenext 循環(huán)內(nèi)容結(jié)束
loop
%>
</table>
五種移動(dòng)指針的方法:
recordset.movefirst '指針移動(dòng)到第一條記錄
recordset.movelast '指針移動(dòng)到最后一條記錄
recordset.movenext '指針移動(dòng)到下一條記錄
recordset.moveprevious '指針移動(dòng)到上一條記錄
recordset.move recordsnum,start '指針移動(dòng)到指定記錄
補(bǔ)充學(xué)習(xí)
<input id="aaa" readonly> 'readonly表示設(shè)為只讀狀態(tài)
if Rs.bof and Rs.eof then 有記錄 else 無(wú)記錄 enf if
判斷記錄是否存在
if not rs.EOF then
有記錄
else
無(wú)記錄
end if
表單知識(shí):
disabled="disabled" 表單灰色不可用狀態(tài)
<input name="kfname" ondblclick="JavaScript:window.open('');" style="width:150px""> 'ondblclick表示雙擊鼠標(biāo)事件 onClick表示單擊鼠標(biāo)事件
<input name="kfname" onClick="document.form1.kfname.value = ''">單擊清空內(nèi)容
onpaste="return false" '表單禁止粘貼
<input onchange= "key()" oninput="key()" onPropertyChange="key()" />
<script language="javascript">
function key(){
var val = document.domainForm.searchedDomainName.value;
document.domainForm.domain_name.value = val;
}
</script>
補(bǔ)學(xué)資料
trim(request("表單")) '去掉字符中左右兩端的空格
IsNull() 函數(shù)判斷一對(duì)象是否為空
Cint() 可把表達(dá)式轉(zhuǎn)換為整數(shù)(Integer)類型。 注釋:值必須是介于 -32768 與 32767 之間的數(shù)字
isinteger() 檢查是否整數(shù)
IsNumeric() 出表達(dá)式的運(yùn)算結(jié)果是否為數(shù)字
cstr() 將括號(hào)中的內(nèi)容轉(zhuǎn)換為字符串,括號(hào)中的內(nèi)容可以是值、變量或表達(dá)式
Split() 返回值數(shù)組 = Split("字符串","分割符")
len() 取字符長(zhǎng)度
LCASE() 函數(shù) LCASE 函數(shù)把字段的值轉(zhuǎn)換為小寫(xiě)
Instr() 函數(shù)返回字符或字符串在另一個(gè)字符串中第一次出現(xiàn)的位置
InStr([start, ]string1, string2[, compare]) string1必要參數(shù)。接受搜索的字符串表達(dá)式。string2必要參數(shù)。被搜索的字符串表達(dá)式?蛇x參數(shù)。指定字符串比較。如果 compare 是 Null,將發(fā)生錯(cuò)誤。如果省略 compare,Option Compare 的設(shè)置將決定比較的類型。
UBound(Split(Users,",")) + 1 取數(shù)組個(gè)數(shù)
<!--#include file="conn.asp" -->
<!--#include virtual="conn.asp" -->
CStr() 函數(shù)轉(zhuǎn)化一個(gè)表達(dá)式為字符串. 允許數(shù)據(jù)類型: expression 是任何有效的表達(dá)式。
IsEmpty() 函數(shù)判斷一對(duì)象是否初始化
DATEDIFF() 函數(shù)返回兩個(gè)日期之間的天數(shù)。
JS收集資料:
<SCRIPT LANGUAGE="JavaScript">
//屏蔽可忽略的js腳本錯(cuò)誤
function killErr(){
return true;
}
window.onerror=killErr;
</SCRIPT>
<script type="text/javascript">
<!--
function CheckForm() {
alert(document.form1.radiobutton.value);
if (document.form1.name.value == "") {
alert("姓名為必填信息喔!");
document.form1.name.focus();
return false;
}
var flage = false;
var radios = document.forms[0].radio1;
for (var i = 0; i < radios.length; i++) {
if (radios[i].checked == true) {
flage = true;
alert("選擇了第" + i + "個(gè)單選按鈕");
return true;
}
}
if (!flage) {
alert("一個(gè)單選按鈕都沒(méi)有選擇!");
return false;
}
-->
Response.Write("<script>alert(""恭喜您信息反饋成功!"");history.go(-1);</script>")
</script>
<script language="javascript">
alert("服務(wù)單保存成功!")
window.location="server_add.asp"
</script>
document.forms['myform'] //表單myform對(duì)象,也可用document.getElementById('myform')獲得
document.forms['myform'].elements.length //表單中元素的個(gè)數(shù),也就是數(shù)組myform的長(zhǎng)度
document.forms['myform'].elements['downurl[]'] //表單中某一數(shù)組元素對(duì)象(名字都叫downurl[])
document.forms['myform'].elements['downurl[]'].length //數(shù)組elements['downurl[]']長(zhǎng)度
document.forms['myform'].elements['downurl[]'][0] //downurl[] 中的第0個(gè)元素
document.forms['myform'].elements['downurl[]'][0].value //downurl[] 中的第0個(gè)元素的value屬性值
//JS判斷實(shí)例
<script type = "text/javascript" language = "javascript">
function clear1()
{
if(confirm("確定要清空數(shù)據(jù)嗎?"))
{
document.main.text1.value = "";
}
else if (1==2)
{
document.write("<b>好天氣</b>")
}
else
{
document.main.text1.value = "否";
}
}
</script>
<body>
<form name="main">
<input type="text" name="text1" />
<input type="button" name="Submit" value="清空數(shù)據(jù)" onClick="return clear1();">
</form>
</body>
//JS判斷實(shí)例 結(jié)速
<script language="JavaScript" type="text/JavaScript">
function delpay()
{
if(confirm("確定要回庫(kù)此嗎?"))
return true;
else
return false;
}
</script>
<script language="JavaScript" type="text/JavaScript">
if(confirm("審核成功是否短信通知客戶?"))
{
var url = 'http://202.85.219.239:8000/LFWS/Send2.aspx?CorpID=LFHN000184&Pwd=553856&Mobile=<%=rs_dx("user_sj")%>&Content=您好,(<%=rs_dx("user_namec")%>)你在鄭州百佳注冊(cè)的帳號(hào):(<%=rs_dx("username")%>)已通過(guò)審核詳情請(qǐng)登鄭州百佳網(wǎng)查看。&Cell=600184&SendTime=';
window.open(url,'短信通知','directorys=no,toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no,width=300,height=200,top=150,left=590');
}
</script>
19. 記錄集對(duì)象的方法:
rs.movenext 將記錄指針從當(dāng)前的位置向下移一行
rs.moveprevious 將記錄指針從當(dāng)前的位置向上移一行
rs.movefirst 將記錄指針移到數(shù)據(jù)表第一行
rs.movelast 將記錄指針移到數(shù)據(jù)表最后一行
rs.absoluteposition=N 將記錄指針移到數(shù)據(jù)表第N行
rs.absolutepage=N 將記錄指針移到第N頁(yè)的第一行
rs.pagesize=N 設(shè)置每頁(yè)為N條記錄
rs.pagecount 根據(jù) pagesize 的設(shè)置返回總頁(yè)數(shù)
rs.recordcount 返回記錄總數(shù)
rs.bof 返回記錄指針是否超出數(shù)據(jù)表首端,true表示是,false為否
rs.eof 返回記錄指針是否超出數(shù)據(jù)表末端,true表示是,false為否
rs.delete 刪除當(dāng)前記錄,但記錄指針不會(huì)向下移動(dòng)
rs.addnew 添加記錄到數(shù)據(jù)表末端
rs.update 更新數(shù)據(jù)表記錄