《ASP網頁製作教程》筆記

來源:互聯網
上載者:User

《ASP網頁製作教程》。王國榮 編著,人民郵電出版社。

開啟MDB資料庫的方法:先定義一個OpenMDB子程式,然後在主程式中調用。
<%
Option Explicit
Sub OpenMDB(dbname,pwd,conn)
‘dbname-資料庫檔案的相對路徑,pwd-資料庫檔案的密碼,conn-使用者定義的Connection對象。
'對於沒有密碼的資料庫,pwd值可任意。
dim connstr
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;" ‘指定OLE DB驅動程式
connstr=connstr & "Data Source=" & Server.MapPath(""&dbname&"") ‘指定資料來源
connstr=connstr & ";Jet OLEDB:Database Password=" & pwd ‘指定密碼
conn.Open connstr
End Sub

Dim conn,rs
Call OpenMDB("vote.mdb","111",conn)
Set rs=Server.CreateObject("ADODB.Recordset")
rs.open "select * from vote",conn,2,2
%>

-----------------------------------------------------------------------
串連資料庫時,若Microsoft提供有OLE DB驅動程式,就直接使用它,如Access。若沒有提供,就需用資料庫自己的ODBC驅動程式,如Foxpro。對不同的驅動程式來說,可能都有其專用的參數。
IIS/PWS 4.0隻能存取Access97以前的資料庫,而不能存取Access2000的資料庫。
Microsoft宣稱OLE DB驅動程式的執行效能優於ODBC驅動程式。

-----------------------------------------------------------------------
Cookies是記錄在瀏覽器的資訊,而其他ASP對象的資訊儲存在Server端,因此,只有在瀏覽器開始瀏覽Server的某一網頁,而Server尚未下載任何資料給瀏覽器之前,瀏覽器才能與Server進行Cookie資料的交換。解決的辦法是先將資料寫到緩衝區。
由於在Cookie的生命週期中,只有關閉瀏覽器才會消失,而Session因有Timeout的設定,即使瀏覽器開啟,中途也可能消失。因此,對於需要將資料分成各個階段來輸入的網頁來說,使用Cookie對象來存放階段性的資料比Session對象合適。
不同公司的瀏覽器Cookie是彼此不相容的。
IE的Cookie存放在/windows/cookies/檔案夾內。
Cookie生命週期的設定方法:
Response.Cookie("UserID")="comehope" : Response.Cookie("UserID").expires="2008/12/31"

-----------------------------------------------------------------------
網頁中調用自己的連結:
<% myself=Request.ServerVariables("Path_info") %>
<A href="<% =myself %>?page=1">第一頁</A>

-----------------------------------------------------------------------
Server對象概要
屬性:
ScripTimeout 伺服器連續處理指令碼的最長時間,預設為90秒。
方法:
CreatObject 建立對象的執行個體
Excute 調用和執行另一個ASP指令碼
GetLastError 建立發生錯誤的ASP Error對象
HTMLEncode 對HTML字串進行編碼,可以用該方法顯示HTML原始碼
MapPath 指定實體路徑。因為開啟檔案或資料庫時,ASP規定必須指定檔案的實體路徑,該方法不支援相對目錄標識符“.”和“..”。
Transfer 重新導向到另一個指令碼,來自第一個指令碼的Request對象和其他對象的值都可以用於第二個指令碼。
URLEncode 對地址進行編碼

-----------------------------------------------------------------------
刪除記錄語句 rs.delete
由於delete方法會刪除目前記錄,因此調用delete方法之後,當前資料記錄將不存在,我們必須再調用某方法將指標從此記錄移開,方可再繼續其他動作。

-----------------------------------------------------------------------
更新資料記錄:先改變欄位值,然後調用update方法,如:
rs("收盤價")=30.5
rs("成交量")=3589
rs.update
如果在未調用update方法前,指標從目前記錄移開,ADO將自動調用update方法。
使用數組更新的方法:rs.update 欄位名稱數組,欄位值數組。如:
Fieldname=Array("收盤價","成交量")
Fieldvalues=Array(30.5,3589)
rs.update Fieldname,Fieldvalues
在改變欄位值之後,而未調用update方法之前,調用CancelUpdate方法會取消更新的資料。

-----------------------------------------------------------------------
添加記錄的方法有修改記錄的方法很相似,不同的是在此之前先用addnew方法建立一個緩衝區,系統會將此記錄自動化佈建為目前記錄,然後象修改記錄一樣,修改這個新記錄的內容。如:
rs.addnew
rs("收盤價")=30.5
rs("成交量")=3589
rs.update
使用數組添加記錄方法:rs.addnew 欄位名稱數組,欄位值數組。

-----------------------------------------------------------------------
SQL Select語句的多種形式
select 欄位列表 from 表
select 欄位名 as 別名 from 表
select 欄位名運算結果 as 別名 from 表
select * from 表 order by 欄位列表 [desc]
注意:order by後的欄位名稱不可以是別名,如下面的語句是錯誤的;
select 學號,語文+數學 as 總成績 from 成績單 order by 總成績
select top 10 * from 成績單
select * from 表 where 條件運算式
select * from 表 where 姓名 like '王%' “%”代表0-15個字元
select * from 表 where 姓名 like '王_' “_”代表一個字元
select * from 表 where between 值1 and 值2
select * from 表 where 欄位名 in(值1,值2,…)

若使用Access資料庫,VB函數也可以用於where條件式中,如;
select * from 成績單 where mid(姓名,2,1)="大"
選取姓名欄位第二個字等於“大”的記錄

在where運算式中使用變數;
數值變數; sql="select * from 股票行情表 where 收盤價 >" & vv
日期時間; sql="select * from 買賣記錄 where 買賣日期=#" & vv & "#"
字串: sql="select * from 股票行情表 where 股票看板代號='" & vv & "'"

-----------------------------------------------------------------------
若希望在重定義數組時保留數組元素的內容,需在數組名前加上Preserve保留字,例如:
ReDim x(5)
x(0)=10:x(1)=20
ReDim Preserve x(10)

-----------------------------------------------------------------------
Response對象概要
屬性:
Buffer 是否先將資料寫到緩衝區中。
ContentType 定義了要在響應主體中發送的資料類型,使用者瀏覽器利用這一資訊決定如何編譯下載的HTTP響應內容。
IsClientConnected 唯讀屬性,根據最近一次使用Response.write判斷使用者是否依然串連在伺服器上。
集合:
Cookie
方法:
BinaryWrite 把位元據寫到客戶機上。
Clear 清空Buffer緩衝區。
End 結束瀏覽器下載。
Flush 輸出緩衝區資料。
Redirect 重新導向到另一個URL上。
Write 向HTTP響應寫入資訊。

-----------------------------------------------------------------------
一般在偵錯工具時會在其中夾雜顯示中間結果的測試語句,但這一次測試沒有問題並不保證以後就沒有問題,這次把測試語句去掉,下次測試時又要寫回去,為了避免這種情況,可以利用緩衝區來解決,如下:
Response.Buffer=True
''''''正常的程式
Response.Flush 輸出此前程式啟動並執行結果。
''''''這裡是測試的語句
Response.Clear '若要輸出以上測試結果只需將此句設為注釋即可。

-----------------------------------------------------------------------
Application對象概要
集合:
Contents 包含所有應用程式級範圍的變數和對象,它有兩個方法,Contents.Remove和Contents.RemoveAll,分別刪除一個和所有變數。
方法:
Lock/UnLock 鎖定Application對象。
事件:
OnStart/OnEnd 在應用程式開始和結束時被觸發。

-----------------------------------------------------------------------
Session對象的使用必須配合瀏覽器的Cookies功能方才有效。IE4.x允許使用者關閉Cookies功能,而IE5以上版本不允許使用者將Cookies關閉。
Session對象概要
屬性:
SessionID 唯一標識每一個目前使用者會話的唯讀屬性值。
集合:
Contents 包含所有使用者會話級範圍的變數和對象,它有兩個方法,Contents.Remove和Contents.RemoveAll,分別刪除一個和所有變數。
事件:
OnStart/OnEnd 在使用者會話開始和結束時被觸發。

-----------------------------------------------------------------------
以下程式讀取Recordset的所有內容。
<%
dim i,Row

' Part I輸出“表頭名稱”
Response.Write "<TABLE Border=1><TR>"
For i=0 to rs.Fields.Count-1
Response.Write "<TD>" & rs(i).Name & "</TD>"
Next
Response.Write "</TR>"

' Part II輸出資料表的“內容”
rs.MoveFirst ' 將目前的資料記錄移到第一項
While Not rs.EOF ' 判斷是否過了最後一項
Row = "<TR>"
For i=0 to rs.Fields.Count-1
Row = Row & "<TD>" & rs(i) & "</TD>"
Next
Response.Write Row & "</TR>"
rs.MoveNext ' 移到下一項
Wend
Response.Write "</TABLE>"
%>

-----------------------------------------------------------------------
對於VBScript來說,最簡單的輸入方式是使用InputBox函數,最簡單的輸出方式是使用MsgBox函數,但在撰寫ASP時,InputBox和MsgBox函數都是停用,因為ASP是在Server端執行的,而使用者是位於遠端機器上,Server端所顯示的視窗(InputBox和MsgBox函數都會顯示視窗)上網者是看不到的,所以在ASP程式中利用InputBox和MsgBox來輸入輸出資料是沒有意義的。

不能僅憑著瀏覽器視窗所看到的結果來判定Response.Write輸出的資料是什麼,而必須利用“查看源檔案”功能來查看到底傳輸給瀏覽器的資料是什麼。

VBScript規定字串中的雙引號要用兩個雙引號來表示,如Response.Write "BC""xy"的輸出結果為BC"xy。

表單中的隱藏欄位<Input Type=Hidden>最好固定地寫在所有可顯的<Input>標記之前。

Request對象支援多個集合,當使用形如Request("name")這樣的語句讀取資訊時,ASP將按照如下次序搜尋Request對象的各個集合:QueryString,Form,cookie,ClientCertificate,ServerVariables。

在沒有資料的情況下,Application對象和Session對象的傳回值是Empty(注意,不是Null),而Request.Cookies卻是返回""(Null 字元串),而在VBS裡,“Null 字元串”是不能與數值一起運算的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.