程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP入門教程 >> ASP基礎講座(下)

ASP基礎講座(下)

編輯:ASP入門教程
ASP基礎講座(下)

        當我們需要同浏覽器交互的時候,有時少不了數據庫。因為只有用數據庫才可能大量、快速地處理信息。使用ASP不僅意味著你可以讀取Access和SQL Server的數據庫,同時也意味著你可以讀取其它ODBC(Open Database Connect,開放式數據庫互聯)兼容的數據庫。為了在ASP中訪問數據庫,我們將接觸一個新名詞——ADO(Active Data Object,活動數據對象)。
  ADO是一種操作Microsoft所支持的數據庫的方法,有些類似於以前在VB中聽說過的DAO(Data Access Object,數據訪問對象)和RDO(Remote Data Object,遠程數據對象)。在ASP中,ADO可以看作是一個服務器組件(Server Component),更簡單點說,是一系列的對象,應用這些功能強大的對象,即可輕松完成對數據庫復雜的操作。在這裡我們所要學的是使用這些對象的方法,具體的操作步驟可以歸納為以下幾步:
  (一)創建數據庫源名(DSN)
  (二)創建數據庫鏈接(Connection)
  (三)創建數據對象
  (四)操作數據庫
  (五)關閉數據對象和鏈接
  下面具體敘述每一步的作法:
  一、創建數據源名
  用ODBC時,經常見到DSN這個名詞,它究竟是什麼,有什麼重要作用呢?DSN(Date Source Name)即數據源名稱。我們知道,ODBC是一種訪問數據庫的方法,只要系統中有相應的ODBC驅動程序,任何程序就可以通過ODBC操縱驅動程序的數據庫。比如我們系統中有Access的ODBC驅動程序,那麼即使我們沒有Access軟件,也可以在我們的程序(如VB編的)中間對一個Access的MDB數據庫加、刪、改記錄。而且我們根本不用知道這個數據庫是放在哪裡的。我們只要寫出SQL語句,ODBC驅動程序就會幫我們做一切事情。我們在給ODBC驅動程序傳SQL指令時,即是用DSN來告訴它到底操作的是哪一個數據庫。如果數據庫的平台變了,比如我們改用了SQL Server的數據庫,只要其中表的結構沒變,我們就不用改寫我們的程序,只要重新在系統中配置DSN就行了。由此可見,DSN是應用程序和數據庫之間的橋梁,要通過ODBC訪問數據庫,前提就是我們必須配置好DSN(即架好橋梁)。一個DSN必須包含一些信息:
  DSN的名字:就是給這座橋取個名字,當程序訪問數據庫時,給系統傳的就是這個名字,而不是數據庫的實際名稱。 
  ODBC驅動程序類型:只有指出驅動程序類型,在我們操作數據庫時,系統才會知道調哪個ODBC驅動程序來服務。 
  數據庫:你必須指定這座橋到底連接的是哪個數據庫,但不同的數據庫系統,指定數據庫名字的方法有些不同。
  這座橋是架在系統之中的,所以WIN95(NT)提供了一個工具來完成這件事,即是控制面板中的32 BIT ODBC,共有三類,即用戶DSN、系統DSN、文件DSN。我們一般就用系統DSN,因為這樣可以讓所有在該系統上操作的人都能使用這個DSN。
  打開Windows的“控制面板”,找到圖標“32位ODBC)”(有一些系統上叫“ODBC”、“32bit ODBC”),雙擊,出現(如圖一)對話框,選中標簽“系統DSN”,點擊“新建”,選驅動程序為Microsoft Access MDB,單擊“完成”,彈出對話框(如圖二),輸出“Data Source Name”為“dsn1”,單擊“OK”,再單擊“選擇數據庫”,選中你要使用的數據庫,例如“C:\b1.mdb”,這樣就OK了。以後我們就用“dsn1”來訪問數據庫“c:\b1.mdb”,而不直接用文件名“C:\b1.mdb”,這樣做的好處是,一旦我們改變了文件名或存放地,就不用再一個一個地修改程序中所有該數據庫的名稱,而只需修改DSN中的配置就可以了。
  二、創數據庫鏈接(Connection)
  用過VB的人都知道,DAO中有鏈接(Connection),RDO中有odo Connection。鏈接用以保持一些關於正在訪問的數據的一些狀態信息,以及鏈接者信息。ASP文件中如果要訪問數據,必須首先創建與數據庫的鏈接,其語法如下:
  set Mconn=Server createObject(“ADOBDCONNECTION”)
  這條語句創建了鏈接對象mConn,接下來:
  mConn.Open “dsn1”,“vsername”,“passWord”
  這條語句打開鏈接,用到了DSN,本例為“dsn1”。其後的兩個參數分別是訪問數據庫的用戶名和口令,為可選參數。
  注意:必須有以上兩個小步驟,因為鏈接對象的創建與打開是兩回事,只有打開了才真正可以用。
  三、創建數據對象(Record Set)
  ADO中的數據對象通常保存的是查詢結果。Record Set是ADO中最復雜的對象,有許多屬性和方法,靈活運用,可以達到許多好的效果。與DAO中的一樣,Record Set保存的是一行行的記錄,並標有一個當前記錄。以下是創建方法:
  Set Record Set=mConn.Execute(sqtStr)
  這條語句創建並打開了對象Record Set,其中mCon是先前創建的鏈接對象,sqtStr是一個串,代表一條標准的SQL語句,例如:
  sqlStr=“SELECT * FROM tab1”
  Set Record Set=mConn.Exe cute(sqlStr)
  這條語句執行後,對象Record Set中就保存了表tab1中的所有記錄。在ASP文件中如何引用返回結果,本文將在文末給出一個實例說明。
  四、操作數據庫
  剛才我們通過調用鏈接對象的Execute方法來將查詢結果返回給一個數據對象。我們說Execute方法的參數是一個標准的SQL語句串,所以我們可以利用它方便地執行數據插入、修改、刪除等操作,例如:
  sqlStr=“INSERT INTO tab1 VALUES(1,2)”
  mConn.Execute(sqlStr)
  /執行插入操作
  sqlStr=“UPDATE tab1 SET fIEld1=3”
  mConn.Execute(sqlStr)
  /執行修改操作
  五、關閉數據對象和鏈接對象
  在使用了ADO對象之後,一定要記住關閉它,因為它使用了一定的服務器資源。通過調用方法close實現關閉,然後再釋放它。
  Record Set.close
  Set Record Set=Nothing
  /關閉創建的數據對象
  mConn.close
  Set mConn=Nothing
  /關閉創建的鏈接對象
  至此,我們已給出了用ASP訪問數據庫的全過程,包括創建數據源-創建鏈接-創建數據對象-操作數據對象-關閉並釋放。這其間由於應用面向對象思想,應該說所有操作都比較簡單,用戶需要注意的僅是對數據結構的了解,亦要清楚當前所操作的對象是什麼,有什麼屬性,等等。只要對這些有了清醒的認識,再加上ASP的強大功能,在網絡上應用你自己的數據庫,就再也不是什麼難事了!
  本文最後給出一個例子,這是基於數據庫的ASP留言簿程序,數據庫結構如下:
  guestbook.mdb
  表lyb:
  xm char(100), ly char(255) , sj datetime
  文件guestbook.ASP:
  <Html>
  <head>
  <title>lyb</title>
  </head>
  <body bgcolor=“#ccccf0”>
  <p>留言簿</p>
  <form METHOD=“POST” action=“guestbook.ASP”>
  <input type=“hidden” name=“task” value=“insert”>
  <p>姓名:<input TYPE=“text” SIZE=“20” NAME=“xm”></p>
  <p>留言:</p>
  <p><textarea ROWS=“5” COLS=“80” NAME=“ly”></textarea></p>
  <p><input TYPE=“submit” VALUE=“記入留言簿” NAME=“B1”><input TYPE=“reset”
  VALUE=“復原” NAME=“B2”></p>
  </form>
  <%
  Set conn = Server.CreateObject(“ADODB.Connection”)
  conn.Open “lybdsn”,“”,“” 
  If Request(“task”)=“insert” then
  xm=Request(“xm”)
  sj = Date()
  sj = sj & “ ” & Hour(Time()) & “:” & Minute(Time())
  If Request(“ly”)=“” then 
  Response.write(“留言不能不輸吧”)
  Response.end
  else
  ly=Request(“ly”)
  end if 
  sql=“INSERT INTO lyb (xm,sj,ly) VALUES ('” & xm & “','” & sj & “','” & ly & “') ”
  conn.execute sql
  End If
  sql = “SELECT * FROM lyb ORDER BY sj DESC”
  Set rs = conn.Execute(sql) %>
  <% On Error Resume Next
  rs.MoveFirst
  do while Not rs.eof %>
  <hr>
  姓名:<%=Server.HtmlEncode(rs.FIElds(“xm”).Value)%><br>
  留於:<%=Server.HtmlEncode(rs.FIElds(“sj”).Value)%><br>
  留言:<%=Server.HtmlEncode(rs.FIElds(“ly”).Value)%>
  <% rs.MoveNext
  loop %>
  </body>
  </Html>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved