程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> 6大對象和數據庫操作簡單學

6大對象和數據庫操作簡單學

編輯:關於ASP編程

    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.`````.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 i  i = 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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved