ASP學習手記

ASP

1.連接SQL Server數據庫

<!--#include file="adovbs.inc" -->
Dim ConnStr
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "translate"       '數據庫名
SqlUsername = "WebCVO"              '用戶名
SqlPassword = "webcvo"              '用戶密碼
SqlLocalName = "192.168.105.204"    '連接名(本地用local,外地用IP)
ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"

Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr

<返回>

2.連接Access數據庫

strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("aspfree.mdb")
set conn = server.createobject("adodb.connection")
conn.open strconn

<返回>

3.使用系統DSN連接數據庫

Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=test;"

<返回>

4.使用數據庫操作
<%
exec="delete from tbl_Privileges where PrivilegeGUID="+cstr(ParaID)
conn.Execute(exec)

Set rs = Server.CreateObject("ADODB.Recordset")
sql="select top 10 * from japanese"
rs.Open sql,conn,adopenStatic

while not(rs.eof)
%><%=rs("word")%>
<%
rs.movenext
wend
rs.Close()
Set rs = nothing
%>


<返回>

5.使用數據庫帶返回值的存儲過程
 
<%
Set Comm=server.CreateObject("ADODB.Command")
Set Comm.ActiveConnection=conn
Comm.CommandType=adCmdStoredProc
Comm.CommandText="ProductsInfo" '存儲過程名稱
Comm.Parameters.Append Comm.CreateParameter("returncode",adInteger,adParamReturnValue)
Comm.Parameters.Append Comm.CreateParameter("word",adVarChar,adParamInput,30,"愛情") '輸入參數
Comm.Parameters.Append Comm.CreateParameter("ID",adinteger,adParamInput,4,45)
Comm.Parameters.Append Comm.CreateParameter("mean1",adVarChar,adParamOutput,30) '輸出參數
Comm.Execute '調用執行存儲過程。
rs=Comm.parameters("mean1").value '返回參數
%><%=rs%>
<%
Set rs = nothing
Set Comm.ActiveConnection = nothing
Set Comm = nothing
%>
adEmpty
adTinyInt
adSmallInt
adInteger
adBigInt
adUnsignedTinyInt
adUnsignedSmallInt
adUnsignedInt
adUnsignedBigInt
adSingle
adDouble
adCurrency
adDecimal
adNumeric
adBoolean
adError
adUserDefined
adVariant
adGUID
adDATE
adDBDate
adDBTime
adDBTimeStamp
adBSTR
adChar
adVarChar
adLongVarChar
adWChar
adVarWChar
adLongVarWChar
adBinary
adVarBinary
adLongVarBinary
adChapter
adPropVariant
adIDispatch
adIUnknown
<返回>

6.使用數據庫帶返回記錄集的存儲過程
<%
Set Comm=server.CreateObject("ADODB.Command")
Set Comm.ActiveConnection=conn
Comm.CommandType=adCmdStoredProc
Comm.CommandText="SearchWord" '存儲過程名稱
Comm.Parameters.Append Comm.CreateParameter("returncode",adInteger,adParamReturnValue)
Comm.Parameters.Append Comm.CreateParameter("word",adVarChar,adParamInput,30,"私") '輸入參數
Set Rs = Comm.Execute() '調用執行存儲過程。
While Not rs.eof
%><%=rs("mean1")%><br>
<%rs.movenext
wend

Set rs = nothing
Set Comm.ActiveConnection = nothing
Set Comm = nothing
%>


<返回>


7.用split分割字符串

str = "ftp://username:password@server"
aryReturn = Split(str,":")
If UBound(aryReturn)<>-1 then
  For i = LBound(aryReturn) To UBound(aryReturn)
    aryReturn(i)
  Next
End If

<返回>

8.vb和數據庫中使用轉義字符

有些字符不轉義,顯示時候會出錯
 

HTML ASP SQL查詢
   FormatInSql = replace(tmpStr,"<","&lt;")      
   FormatInSql = replace(tmpStr,">","&gt;")      
   FormatInSql = replace(tmpStr,chr(13),"<br/>")
   FormatInSql = replace(tmpStr," ","&nbsp;")    
   FormatInSql = replace(tmpStr,"'","&apos;")    
FormatInSql = replace(tmpStr,chr(34),"""") 
str=  " id=""20""  "         
reString=chr(13)+chr(10)     
str=replace(str,reString,"")
CammandParaName=replace(CammandParaName,"'","''")

<返回>

9.如何強制要求VB聲明變量

    在asp文件頭部用Option Explicit

<返回>

10.如何處理不用的對象


  當使用完對象後,首先使用Close方法來釋放對象所佔用的系統資源;然後設置對象值爲“nothing”來釋放對象佔用的內存,否則會因爲對象太多導致WEB服務站點運行效率降低乃至崩潰,相應語句如下:
  <%
  對象.close
  set對象= nothing
  %>

<返回>

11.如何設定緩衝

  (1)設定緩衝
    Response.Buffer = True
    在結尾寫:Response.Flush
  (2)不允許用緩衝
   <HTML>
   <HEAD>
     <META HTTP-EQUIV="REFRESH" CONTENT="5">
     <TITLE> 你的標題 </TITLE>
   </HEAD>
   <BODY>
      你的頁面的其它部分。。。。。
   </BODY>
   <HEAD>
     <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
   </HEAD>
   </HTML>

     HTM網頁
      <META HTTP-EQUIV="pragma" CONTENT="no-cache">
      <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
      <META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
      或者<META HTTP-EQUIV="expires" CONTENT="0">

     ASP網頁
      Response.Expires = -1
      Response.ExpiresAbsolute = Now() - 1
      Response.cachecontrol = "no-cache"|

      response.addHeader "pragma" , "no-cache"
      response.addHeader "cache-control" , "private"

     PHP網頁
      header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
      header("Cache-Control: no-cache, must-revalidate");
      header("Pragma: no-cache");

<返回>

12.設定Session超時時間

這麼寫:Session.Timeout=60 '設定超時時間爲60分鐘

<返回>

13.獲得訪問者IP和瀏覽器類型等信息 

本機ip<%=request.servervariables("remote_addr")%>
服務器名<%=Request.ServerVariables("SERVER_NAME")%>
服務器IP<%=Request.ServerVariables("LOCAL_ADDR")%>
服務器端口<%=Request.ServerVariables("SERVER_PORT")%>
服務器時間<%=now%>
IIS版本<%=Request.ServerVariables"SERVER_SOFTWARE")%>
腳本超時時間<%=Server.ScriptTimeout%>
本文件路徑<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>
服務器CPU數量<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>
服務器解譯引擎<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %>
服務器操作系統<%=Request.ServerVariables("OS")%>
檢查來訪者是否用了代理<% if Request.ServerVariables("HTTP_X_FORWARDED_FOR")<>"" then
                              response.write "<font color=#FF0000>您通過了代理服務器,"& _"真實的IP爲"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")
                        end if%>
<返回>

14.將query string從一個asp文件傳送到另一個

前者文件加入下句:
Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING"))

<返回>

15.加密腳本

可以去下載一個微軟的Windows Script Encoder(http://www.wrclub.net/down.aspx?id=223),它可以對asp的腳本和客戶端javascript/vbscript腳本進行加密。。。不過客戶端加密後,只有ie5才能執行,服務器端腳本加密後,只有服務器上安裝有script engine 5(裝一個ie5就有了)才能執行。

<返回>

16.獲得CPU信息

<%
Set objShell = CreateObject("WScript.Shell")
Set objEnv = objShell.Environment("SYSTEM")
Response.Write "<H4>Number of Processors: " & objEnv("NUMBER_OF_PROCESSORS") & "</H4>"
%>

<返回>

17.在ASP中讀取註冊表的信息 

通過 Windows Scripting object 的 Regread 方法,可以從註冊表中讀取信息。
下面的例子演示瞭如何得到 common files 的路徑:
<%
Dim strPath
strPath = "HKLMSOFTWAREMICROSOFTWINDOWSCURRENTVERSIONCOMMONFILESDIR"
Set objShell = CreateObject("WScript.Shell")
Response.Write "<b>Registry value(Common files dir):</b> " & objShell.RegRead(strPath)
%>

<返回>

18.取得所有的Session變量

  在程序調試中,有時候需要知道有多少Session變量在使用,她們的值如何?由於Session對象提供一個稱爲Contents的集合(Collection),我們可以通過For...Each循環來達到目標:
Dim strName, iLoop
For Each strName in Session.Contents
Response.Write strName & " - " & Session.Contents(strName)& "<BR>"
Next

<返回>


19.定義數據庫連接的一些常量

Const adOpenForwardOnly = 0 '遊標只向前瀏覽記錄,不支持分頁、Recordset、BookMark
Const adOpenKeyset = 1 '鍵集遊標,其他用戶對記錄說做的修改將反映到記錄集中,但其他用戶增加或刪除記錄不會反映到記錄集中。支持分頁、Recordset、BookMark
Const adOpenDynamic = 2 '動態遊標功能最強,但耗資源也最多。用戶對記錄說做的修改,增加或刪除記錄都將反映到記錄集中。支持全功能瀏覽(ACCESS不支持)。
Const adOpenStatic = 3 '靜態遊標,只是數據的一個快照,用戶對記錄說做的修改,增加或刪除記錄都不會反映到記錄集中。支持向前或向後移動

Const adLockReadOnly = 1 '鎖定類型,默認的,只讀,不能作任何修改
Const adLockPessimistic = 2 '當編輯時立即鎖定記錄,最安全的方式
Const adLockOptimistic = 3 '只有在調用Update方法時才鎖定記錄集,而在此前的其他操作仍可對當前記錄進行更改、插入和刪除等
Const adLockBatchOptimistic = 4 '當編輯時記錄不會被鎖定,而更改、插入和刪除是在批處理方式下完成的

Const adCmdText = &H0001
Const adCmdTable = &H0002

<返回>

20.定義數據庫的字段的初始值

  在Default中用(newid())  (getdate())
<返回>

21.修改contentType並下載gif等格式
<%
function dl(f,n)
   on error resume next
   set s=CreateObject("Adodb.Stream")
   S.Mode=3
   S.Type=1
   S.Open
   s.LoadFromFile(server.mappath(f))
   if err.number>0 then
      response.write err.number & ":" & err.description
   else
      response.contentType="application/x-gzip"
      response.addheader "Content-Disposition:","attachment; filename=" & n
      response.binarywrite(s.Read(s.size))
   end if
end function
call dl("012922501.gif","t1.gif")
%>
<返回>

22.RecordSet的基本屬性和方法

rs.movenext 將記錄指針從當前的位置向下移一行
rs.moveprevious 將記錄指針從當前的位置向上移一行
rs.movefirst 將記錄指針移到數據表第一行
rs.movelast 將記錄指針移到數據表最後一行
rs.absoluteposition=N 將記錄指針移到數據表第N行
rs.absolutepage=N 將記錄指針移到第N頁的第一行
rs.pagesize=N 設置每頁爲N條記錄
rs.pagecount 根據 pagesize 的設置返回總頁數
rs.recordcount 返回記錄總數 
rs.bof 返回記錄指針是否超出數據表首端,true表示是,false爲否
rs.eof 返回記錄指針是否超出數據表末端,true表示是,false爲否
rs.delete 刪除當前記錄,但記錄指針不會向下移動
rs.addnew 添加記錄到數據表末端
rs.update 更新數據表記錄

<返回>

23.獲得查詢獲得的表的各個字段的名字

For i=0 to rs.fields.count-1
   response.write " "&rs(i).Name&" "
Next

'取字段內容
rs.movefirst
while not rs.eof
  For i=0 to rs.Fields.count-1
    response.write(rs(i))
  Next
  rs.MoveNext
wend

<返回>
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章