ASP學習步驟
個對象 RequestResponseSessionServerApplictaion
兩個數據庫組件 AdodbRecordset AdodbConnection
RequestFrom("表單名稱") 得到From表單數據
RequestQueryString("Url參數") 得到Url參數
indexasp?act=save
RequestQueryString("act")
一request
RequestCookies("Cookie") 得到Cookies Cookies 一般用於存儲用戶信息 用於驗證 一般用於用戶驗證之類的 Session也有同樣的類型 區別是Session是存在服務器上 Cookies是存在用戶硬盤上 一般可以省略點方法 直接用Request("參數名") 他會依次用From QueryString Cookies去取值 Request 差不多就這些了
二Response
ResponseWrite 向浏覽器輸出
ResponseRedirect 重轉向
ResponseEnd 停止向浏覽器輸出
ResponseCookies 向客戶端寫Cookies
ResponseCookies("CookieName") = "test"
ResponspCookies("CookieName")Domain="chinacom" 這樣寫的話 在所有的Chinacom的域名下用RequestCookies("CookieName")都能得到
三Session
Session("SessionName") = "" 把信息存儲到Session裡面
If Session("SessionName") <> "" Then 判斷Session是否存在 一般用於驗證 Session("SessionName") = "" 清空Session
SessionAbandon 清空所有Session
SessionTimeOut = 設置Session過期時間 單位為秒
Session是存在服務器上 Cookies是存在用戶硬盤上 Session重啟了進程池就沒有了 Cookies我們就不能控制了 除非寫個程序 強制清空
四Server
ServerMappath 把虛擬路徑轉為實際路徑如果你的程序在C盤 那麼你用path = ServerMappath("/") 那麼和path = "c:" 是一樣的 基於根目錄
ServerCreateObject 這個注冊組件的 比較常用 ServerCreateObject("AdodbRecordSet") 注冊一個數據庫組件
五 Applictaion 是一個全局對象 他和Session是一樣的 區別在於 Session是存儲單個的用戶信息 Application是存儲全局信息
Application("Site") = "Http://www`````com" 只要在該站點下的所有文件都可以調用這個Application 二級域名不可以調用這個Application而要用Cookies 設置他的可用域名
=======================================================
六AdodbConnection 連接數據庫 先注冊一個Conn對象 Set Conn = ServerCreateObject("AdodbConnection") //用Server對象的CreateObject方法 然後再用Connection的open方法連接數據庫 ConnOpen "Provider=MicrosoftJetOLEDB;Data Source="&ServerMappath("Datemdb") ServerMappath("Datemdb")即當前目錄下面的DateMdb 一般我們把這個放在Connasp裡面
<%
Dim ConnConnStr
Set Conn = ServerCreateObject("AdodbConnection")
ConnStr = "Provider=MicrosoftJetOLEDB;Data Source="&ServerMappath("Datemdb")
ConnOpen ConnStr
%>
Dim是定義一個變量asp是弱類型語言 不用定義也可以的不像C# Java之類的要先定義才能使用
Execute 方法 ConnExecute(Sql) 執行一條SQL語句 ConnExecute("Insert Into Tablename()Values()")
ConnClose 關閉對象 insert 插入一條數據 update修改數據 delete刪除 select 查詢
七AdodbRecordset 返回一個記錄集 先也是注冊對象 Set Rs = ServerCreateObject("AdodbRecordset") 這個rs是可以自己定義的 不一定一定要用rs 或者conn 因為這些是Com組件(也就是用deiphl C++寫的dll一些asp本身不能實現的功能 ) 不是asp的內置對象 所以要注冊對象
然後也是用Open方法打開記錄集 RsOpen "Select * From TableName"Conn RsOpen Sql語句Conn對象 (參數一會講)Sql語句 一般是一條查詢語句 Conn對象就是剛才上面Connection打開的數據庫對象
打開數據庫的游標類型
這個參數這裡 如果改為的話 就不能對庫進行操作不能更新和刪除(不能使用RsAddnewRsUpdateRsDelete) 改為 以獨占的形式打開(當有一個用戶在修改庫的時候就會鎖定庫保持數據的一致性)
可以對庫進去任何操作包括刪除 修改 更新 添加
這裡一般我會用兩種 在列表頁的時候 因為不用操作庫只讀查詢就行了 RsOpen SqlConn 在添加修改數據的時候 用RsOpen SqlConn RsBof 是否為第一條數據 是 返回 True 反之 返回False RsFof 是否為最後 一條數據 是 返回 True 反之 返回False 那就可以用這個來判斷數據庫裡有沒有記錄 if rseof and rsbof then 就是說當前游標 不在第一條也不在最後一條 就說明沒有記錄 if rseof then 這樣說明有記錄 那麼我們就用個循環把數據輸出 Rs和Conn一樣理解是變量
Set Rs = ServerCreateObject("AdodbRecordset")
RsOpen SqlConn
If Not RsEof Then 如果不在記錄集的未端說明有記錄
Do While Not RsEof 直到該記錄集的最後 跳出循環
ResponseWrite Rs("字段名")
RsMoveNext 游標向下移動
Loop
End If
RsClose //注銷對象
Set Rs = Nothing //釋放資源
因為asp是弱類型的 定量對象時不用定義類型
如果是C# 就是
int i; string str; asp 就 dim istr 還有asp定義變量不能賦初始值
C# int i = ;
asp dim i i =
下面講一下指針移動(就上面的游標應該是指針游標是C語言裡面的asp沒有)
RsMoveNext 向下移動一條
RsMovePrevious 向上移動一條
RsMovefirst 移動到第一條
RsMoveLast 移動到最後一條
RsAbsoluteposition = n 移動記錄指針到第n行
常用的就RsMoveNext
講asp分頁的幾個方法屬性
RsPagesize = n 每頁顯示N條數據
Rsabsolutepage = n 將記錄指針移動第N頁的第一條數據
RsRecordCount 記錄集的總記錄數
RsPageCount 記錄集的總頁數
<%
Dim ConnConnStr
Set Conn = ServerCreateObject("AdodbConnection")
ConnStr = "Provider=MicrosoftJetOLEDB;Data Source="&ServerMappath("Datemdb")
ConnOpen ConnStr
Set Rs = ServerCreateObject("AdodbRecordset")
RsOpen SqlConn
PageSize =
RsPageSize = PageSize 每頁顯示條
curpage = RequestQueryString("Page") 得到當前頁數
If curpage = "" Or IsNumeric(curpage) Or (curpageRspagecount) > Then
如果curpage等於空 或者 不是數值類型 或者 curpage大於總數
curpage =
那麼curpage等於
End If
Rsabsolutepage = curpage 設置當前記錄集頁面
i =
If Not RsEof Then 如果不在記錄集的未端說明有記錄
Do While Not RsEof and i < PageSize 如果已經是數據集的最後一條記錄 或者 i已經大於 RsPageSize 就退出
ResponseWrite Rs("字段名")
i = i + 每循環一次 i +
RsMoveNext 指針向下移動
Loop
End If
%>
<%if curpage= then%>
首頁
<%else%>
<a href="?page=">首頁</a>
<%end if%>
<%if curpage= then%>
上一頁
<%else%>
<a href="?page=<%=curpage%>">上一頁</a>
<%end if%>
<%if rspagecount<curpage+ then%>
下一頁
<%else%>
<a href="?page=<%=curpage+%>">下一頁</a>
<%end if%>
<%if rspagecount<curpage+ then%>
尾頁
<%else%>
<a href="?page=<%=rspagecount%>">尾頁</a>
<%end if%>
說明 curpage 是上面用ReqeustQuerystring得到的當前頁
首頁
這個使用當前頁是否為第一頁時判別如果當前為第一頁(也就是首頁)那麼顯示首頁兩字沒有鏈接否則提供直接跳轉到首頁的鏈接
上一頁
當前為第一頁時鏈接失效反過來鏈接到當前面的上一頁這裡使用<%=curpage%>就是用當前的頁數減去得到上一頁
下一頁
這裡需要使用rspagecount這個屬性來比較假如總頁數小於當前頁數加的值那表明這就是第後一頁鏈接將失效否則鏈接到下一頁
尾頁
和下一頁的功能一樣判定出是最後頁時鏈接失效否則將當前頁指定為rspagecount(總頁數)
<%
RsClose //注銷對象
Set Rs = Nothing //釋放資源
%>
RsAddnew 這是新增一條記錄 打開的數據集必須為
Set Rs = ServerCreateObject("AdodbRecordset")
Sql = "Select * From Tealename"
RsOpen SqlConn
RsAddnew() 添加記錄到記錄集未端
Rs("字段名") = 值
Rs("字段名") = 值
Rs("字段名") = 值
RsUpdate() 將修改更新到數據庫內
RsClose
Set Rs = Nothing
%>
RsUpdate 更新數據
Set Rs = ServerCreateObject("AdodbRecordset")
Sql = "Select * From Tealename Where id = " 修改id為的數據
RsOpen SqlConn
Rs("欲更新的字段名") = 更新後的值
RsUpdate() 將修改更新到數據庫內
RsClose
Set Rs = Nothing
RsDelete 刪除
Set Rs = ServerCreateObject("AdodbRecordset")
Sql = "Select * From Tealename Where id = " 刪除id為的數據
RsOpen SqlConn
RsDelete() 刪除當前記錄但指針不會向下移動所有如果要刪除多條數據的時候 要用到循環
RsClose
Set Rs = Nothing
From:http://tw.wingwit.com/Article/program/net/201311/14167.html