ASP學習步驟:
1、5個物件Request、Response、Session、Server、Applictaion
2、兩個資料庫組件Adodb.Recordset Adodb.Connection
3、Request.From(表單名稱) 得到From表單數據
4、Request.QueryString(Url參數) 得到Url參數
5、index.asp?act=save
6、Request.QueryString(act)
一、request
Request.Cookies(Cookie) 得到Cookies Cookies 一般用於儲存使用者資訊用於驗證一般用於使用者驗證之類的Session也有同樣的類型區別是Session是存在伺服器上Cookies是存在使用者硬碟上一般可以省略點方法直接用Request(參數名稱) 他會依序用From QueryString Cookies去取值Request 差不多就這些了
二、Response
Response.Write 向瀏覽器輸出
Response.Redirect 重轉向
Response.End 停止向瀏覽器輸出
Response.Cookies 向客戶端寫Cookies
Response.Cookies(CookieName) = test
Responsp.Cookies(CookieName).Domain=china228.com 這樣寫的話在所有的China228.com的網域下用Request.Cookies(CookieName)都能得到
三、Session
Session(SessionName) = 把資訊儲存到Session裡面
If Session(SessionName) <> Then 判斷Session是否存在一般用於驗證Session(SessionName) = 清空Session
Session.Abandon 清空所有Session
Session.TimeOut = 100 設定Session過期時間單位為秒
Session是存在伺服器上Cookies是存在用戶硬碟上Session重啟了進程池就沒有了Cookies我們就不能控制了除非寫個程式強制清空
四、Server
Server.Mappath 把虛擬路徑轉為實際路徑,如果你的程式在C盤那麼你用path = Server.Mappath(/) 那麼和path = c:/ 是一樣的基於根目錄
Server.CreateObject 這個註冊元件的比較常用Server.CreateObject(Adodb.RecordSet) 註冊一個資料庫元件
五Applictaion 是一個全域物件他和Session是一樣的差別在於Session是儲存單一的使用者資訊Application是儲存全域資訊
Application(Site) = Http://www.webjx.com 只要在該網站下的所有檔案都可以呼叫這個Application 二級網域不可以呼叫這個Application,而要用Cookies 設定他的可用域名
==================================================== =====
六、Adodb.Connection 連線資料庫先註冊一個Conn物件Set Conn = Server.CreateObject(Adodb.Connection) //用Server物件的CreateObject方法然後再用Connection的open方法連接資料庫Conn.Open Provider=Microsoft.Jet.OLEDB .4.0;Data Source=&Server.Mappath(Date.mdb) Server.Mappath(Date.mdb)即目前目錄下方的Date.Mdb一般我們會把這個放在Conn.asp裡面
<%
Dim Conn,ConnStr
Set Conn = Server.CreateObject(Adodb.Connection)
ConnStr = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&Server.Mappath(Date.mdb)
Conn.Open ConnStr
%>
Dim是定義一個變量,asp是弱型別語言不用定義也可以的,不像C# Java之類的要先定義才能使用
Execute 方法Conn.Execute(Sql) 執行一條SQL語句Conn.Execute(Insert Into Tablename(1,2,)Values(1,2))
Conn.Close 關閉物件insert 插入一條資料update修改資料delete刪除select 查詢
七、Adodb.Recordset 回傳一個記錄集先也是註冊物件Set Rs = Server.CreateObject(Adodb.Recordset) 這個rs是可以自己定義的不一定一定要用rs 或conn 因為這些是Com組件(也就是用deiphl C++寫好的dll,一些asp本身不能實現的功能) 不是asp的內建對象,所以要註冊對象
接著也是用Open方法開啟記錄集Rs.Open Select * From TableName,Conn,1,3 Rs.Open Sql語句,Conn物件,1,3 (1,3參數一會講)Sql語句一般是一條查詢語句Conn物件就是剛才上面Connection打開的資料庫對象
1 開啟資料庫的遊標類型
3 這個參數這裡如果改為1的話就不能對庫進行操作,不能更新和刪除(不能使用Rs.Addnew,Rs.Update,Rs.Delete) 改為2 以獨佔的形式打開(當有一個用戶在修改庫的時候,就會鎖定庫,保持資料的一致性)
3 可以對庫進去任何操作,包括刪除修改更新添加
這裡一般我會用兩種在列表頁的時候因為不用操作庫,只讀查詢就行了Rs.Open Sql,Conn,1,1 在添加修改數據的時候用Rs.Open Sql,Conn,1,3 Rs .Bof 是否為第一條數據是返回True 反之返回False Rs.Fof 是否為最後一條數據是返回True 反之返回False 那就可以用這個來判斷數據庫裡有沒有記錄if rs.eof and rs.bof then 就是說當前遊標不在第一條也不在最後一條就說明沒有記錄if rs.eof then 這樣說明有記錄那麼我們就用個循環把數據輸出Rs和Conn一樣理解,是變量
Set Rs = Server.CreateObject(Adodb.Recordset)
Rs.Open Sql,Conn,1,1
If Not Rs.Eof Then 如果不在記錄集的未端,表示有記錄
Do While Not Rs.Eof 直到該記錄集的最後跳出循環
Response.Write Rs(字段名)
Rs.MoveNext 遊標向下移動
Loop
End If
Rs.Close //註銷對象
Set Rs = Nothing //釋放資源
因為asp是弱型別的定量物件時不用定義類型
如果是C# 就是
int i; string str;asp就dim i,str 還有asp定義變數不能賦初始值
C# int i = 1;
asp dim ii = 1
下面講一下指標移動(就上面的遊標,應該是指標,遊標是C語言裡面的,asp沒有)
Rs.MoveNext 向下移動一條
Rs.MovePrevious 向上移動一條
Rs.Movefirst 移動到第一條
Rs.MoveLast 移動到最後一條
Rs.Absoluteposition = n 移動記錄指標到第n行
常用的就Rs.MoveNext
講asp分頁的幾個方法屬性
Rs.Pagesize = n 每頁顯示N條數據
Rs.absolutepage = n 將記錄指標移動第N頁的第一個數據
Rs.RecordCount 記錄集的總記錄數
Rs.PageCount 記錄集的總頁數
<%
Dim Conn,ConnStr
Set Conn = Server.CreateObject(Adodb.Connection)
ConnStr = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&Server.Mappath(Date.mdb)
Conn.Open ConnStr
Set Rs = Server.CreateObject(Adodb.Recordset)
Rs.Open Sql,Conn,1,1
PageSize = 20
Rs.PageSize = PageSize '每頁顯示20條
curpage = Request.QueryString(Page) '得到目前頁數
If curpage = Or IsNumeric(curpage) Or (curpage-Rs.pagecount) > 0 Then
'如果curpage等於空或不是數值類型或curpage大於總數
curpage = 1
'那麼curpage等於1
End If
Rs.absolutepage = curpage '設定目前記錄集頁面
i = 1
If Not Rs.Eof Then 如果不在記錄集的未端,表示有記錄
Do While Not Rs.Eof and i < PageSize 如果已經是資料集的最後一筆記錄或i已經大於Rs.PageSize 就退出
Response.Write Rs(字段名)
i = i + 1 每循環一次i + 1
Rs.MoveNext 指針向下移動
Loop
End If
%>
<%if curpage=1 then%>
首頁
<%else%>
<a href=?page=1>首頁</a>
<%end if%>
<%if curpage=1 then%>
上一頁
<%else%>
<a href=?page=<%=curpage-1%>>上一頁</a>
<%end if%>
<%if rs.pagecount<curpage+1 then%>
下一頁
<%else%>
<a href=?page=<%=curpage+1%>>下一頁</a>
<%end if%>
<%if rs.pagecount<curpage+1 then%>
尾頁
<%else%>
<a href=?page=<%=rs.pagecount%>>尾頁</a>
<%end if%>
說明curpage 是上面用Reqeust.Querystring得到的目前頁
首頁:
這個使用當前頁是否為第一頁時判別,如果當前為第一頁(也就是首頁),那麼顯示首頁兩字,沒有鏈接,否則提供直接跳轉到首頁的鏈接。
上一頁:
目前為第一頁時,連結失效,反過來,連結到當前面的上一頁,這裡使用:<%=curpage-1%>,就是用目前的頁數減去1,得到上一頁。
下一頁:
這裡需要使用rs.pagecount這個屬性來比較,假如總頁數小於目前頁數加1的值,那表示這就是第後一頁,連結將會失效,否則連結到下一頁。
尾頁:
和下一頁的功能一樣判定出是最後頁時連結失效,否則將當前頁指定為rs.pagecount(總頁數)。
<%
Rs.Close //註銷對象
Set Rs = Nothing //釋放資源
%>
Rs.Addnew 這是新增一筆記錄開啟的資料集必須為1,3
Set Rs = Server.CreateObject(Adodb.Recordset)
Sql = Select * From Tealename
Rs.Open Sql,Conn,1,3
Rs.Addnew() 將記錄新增至記錄集未端
Rs(字段名1) = 值1
Rs(字段名2) = 值2
Rs(字段名3) = 值3
Rs.Update() 將修改更新到資料庫內
Rs.Close
Set Rs = Nothing
%>
Rs.Update 更新數據
Set Rs = Server.CreateObject(Adodb.Recordset)
Sql = Select * From Tealename Where id = 1 '修改id為1的數據
Rs.Open Sql,Conn,1,3
Rs(欲更新的字段名1) = 更新後的值1
Rs.Update() 將修改更新到資料庫內
Rs.Close
Set Rs = Nothing
Rs.Delete 刪除
Set Rs = Server.CreateObject(Adodb.Recordset)
Sql = Select * From Tealename Where id = 1 '刪除id為1的數據
Rs.Open Sql,Conn,1,3
Rs.Delete() '刪除目前記錄,但指標不會向下移動,所有如果要刪除多個資料的時候要用到循環
Rs.Close
Set Rs = Nothing
兩大資料庫操作物件屬性講教完畢