歡迎訪(fǎng)問(wèn)世紀網(wǎng)絡(luò )官網(wǎng),寶雞網(wǎng)站建設SEO優(yōu)化已累計服務(wù)超過(guò)900家企業(yè)!     咨詢(xún)熱線(xiàn):13619273150

15年網(wǎng)站建設優(yōu)化經(jīng)驗,900家客戶(hù)的選擇,值得信賴(lài)!


ASP基礎講座(下)

作者:佚名      發(fā)布時(shí)間:2009-06-22      瀏覽:2470

62.9K


ASP基礎講座(下)

當我們需要同瀏覽器交互的時(shí)候,有時(shí)少不了數據庫。因為只有用數據庫才可能大量、快速地處理信息。使用ASP不僅意味著(zhù)你可以讀取Access和SQL Server的數據庫,同時(shí)也意味著(zhù)你可以讀取其它ODBC(Open Database Connect,開(kāi)放式數據庫互聯(lián))兼容的數據庫。為了在A(yíng)SP中訪(fǎng)問(wèn)數據庫,我們將接觸一個(gè)新名詞——ADO(Active Data Object,活動(dòng)數據對象)。
  ADO是一種操作Microsoft所支持的數據庫的方法,有些類(lèi)似于以前在VB中聽(tīng)說(shuō)過(guò)的DAO(Data Access Object,數據訪(fǎng)問(wèn)對象)和RDO(Remote Data Object,遠程數據對象)。在A(yíng)SP中,ADO可以看作是一個(gè)服務(wù)器組件(Server Component),更簡(jiǎn)單點(diǎn)說(shuō),是一系列的對象,應用這些功能強大的對象,即可輕松完成對數據庫復雜的操作。在這里我們所要學(xué)的是使用這些對象的方法,具體的操作步驟可以歸納為以下幾步:
  (一)創(chuàng )建數據庫源名(DSN)
  (二)創(chuàng )建數據庫鏈接(Connection)
  (三)創(chuàng )建數據對象
  (四)操作數據庫
  (五)關(guān)閉數據對象和鏈接
  下面具體敘述每一步的作法:
  一、創(chuàng )建數據源名
  用ODBC時(shí),經(jīng)常見(jiàn)到DSN這個(gè)名詞,它究竟是什么,有什么重要作用呢?DSN(Date Source Name)即數據源名稱(chēng)。我們知道,ODBC是一種訪(fǎng)問(wèn)數據庫的方法,只要系統中有相應的ODBC驅動(dòng)程序,任何程序就可以通過(guò)ODBC操縱驅動(dòng)程序的數據庫。比如我們系統中有Access的ODBC驅動(dòng)程序,那么即使我們沒(méi)有Access軟件,也可以在我們的程序(如VB編的)中間對一個(gè)Access的MDB數據庫加、刪、改記錄。而且我們根本不用知道這個(gè)數據庫是放在哪里的。我們只要寫(xiě)出SQL語(yǔ)句,ODBC驅動(dòng)程序就會(huì )幫我們做一切事情。我們在給ODBC驅動(dòng)程序傳SQL指令時(shí),即是用DSN來(lái)告訴它到底操作的是哪一個(gè)數據庫。如果數據庫的平臺變了,比如我們改用了SQL Server的數據庫,只要其中表的結構沒(méi)變,我們就不用改寫(xiě)我們的程序,只要重新在系統中配置DSN就行了。由此可見(jiàn),DSN是應用程序和數據庫之間的橋梁,要通過(guò)ODBC訪(fǎng)問(wèn)數據庫,前提就是我們必須配置好DSN(即架好橋梁)。一個(gè)DSN必須包含一些信息:
  DSN的名字:就是給這座橋取個(gè)名字,當程序訪(fǎng)問(wèn)數據庫時(shí),給系統傳的就是這個(gè)名字,而不是數據庫的實(shí)際名稱(chēng)。
  ODBC驅動(dòng)程序類(lèi)型:只有指出驅動(dòng)程序類(lèi)型,在我們操作數據庫時(shí),系統才會(huì )知道調哪個(gè)ODBC驅動(dòng)程序來(lái)服務(wù)。
  數據庫:你必須指定這座橋到底連接的是哪個(gè)數據庫,但不同的數據庫系統,指定數據庫名字的方法有些不同。
  這座橋是架在系統之中的,所以WIN95(NT)提供了一個(gè)工具來(lái)完成這件事,即是控制面板中的32 BIT ODBC,共有三類(lèi),即用戶(hù)DSN、系統DSN、文件DSN。我們一般就用系統DSN,因為這樣可以讓所有在該系統上操作的人都能使用這個(gè)DSN。
  打開(kāi)Windows的“控制面板”,找到圖標“32位ODBC)”(有一些系統上叫“ODBC”、“32bit ODBC”),雙擊,出現(如圖一)對話(huà)框,選中標簽“系統DSN”,點(diǎn)擊“新建”,選驅動(dòng)程序為Microsoft Access MDB,單擊“完成”,彈出對話(huà)框(如圖二),輸出“Data Source Name”為“dsn1”,單擊“OK”,再單擊“選擇數據庫”,選中你要使用的數據庫,例如“C:b1.mdb”,這樣就OK了。以后我們就用“dsn1”來(lái)訪(fǎng)問(wèn)數據庫“c:b1.mdb”,而不直接用文件名“C:b1.mdb”,這樣做的好處是,一旦我們改變了文件名或存放地,就不用再一個(gè)一個(gè)地修改程序中所有該數據庫的名稱(chēng),而只需修改DSN中的配置就可以了。
  二、創(chuàng )數據庫鏈接(Connection)
  用過(guò)VB的人都知道,DAO中有鏈接(Connection),RDO中有odo Connection。鏈接用以保持一些關(guān)于正在訪(fǎng)問(wèn)的數據的一些狀態(tài)信息,以及鏈接者信息。ASP文件中如果要訪(fǎng)問(wèn)數據,必須首先創(chuàng )建與數據庫的鏈接,其語(yǔ)法如下:
  set Mconn=Server createObject(“ADOBDCONNECTION”)
  這條語(yǔ)句創(chuàng )建了鏈接對象mConn,接下來(lái):
  mConn.Open “dsn1”,“vsername”,“password”
  這條語(yǔ)句打開(kāi)鏈接,用到了DSN,本例為“dsn1”。其后的兩個(gè)參數分別是訪(fǎng)問(wèn)數據庫的用戶(hù)名和口令,為可選參數。
  注意:必須有以上兩個(gè)小步驟,因為鏈接對象的創(chuàng )建與打開(kāi)是兩回事,只有打開(kāi)了才真正可以用。
  三、創(chuàng )建數據對象(Record Set)
  ADO中的數據對象通常保存的是查詢(xún)結果。Record Set是ADO中最復雜的對象,有許多屬性和方法,靈活運用,可以達到許多好的效果。與DAO中的一樣,Record Set保存的是一行行的記錄,并標有一個(gè)當前記錄。以下是創(chuàng )建方法:
  Set Record Set=mConn.Execute(sqtStr)
  這條語(yǔ)句創(chuàng )建并打開(kāi)了對象Record Set,其中mCon是先前創(chuàng )建的鏈接對象,sqtStr是一個(gè)串,代表一條標準的SQL語(yǔ)句,例如:
  sqlStr=“SELECT * FROM tab1”
  Set Record Set=mConn.Exe cute(sqlStr)
  這條語(yǔ)句執行后,對象Record Set中就保存了表tab1中的所有記錄。在A(yíng)SP文件中如何引用返回結果,本文將在文末給出一個(gè)實(shí)例說(shuō)明。
  四、操作數據庫
  剛才我們通過(guò)調用鏈接對象的Execute方法來(lái)將查詢(xún)結果返回給一個(gè)數據對象。我們說(shuō)Execute方法的參數是一個(gè)標準的SQL語(yǔ)句串,所以我們可以利用它方便地執行數據插入、修改、刪除等操作,例如:
  sqlStr=“INSERT INTO tab1 VALUES(1,2)”
  mConn.Execute(sqlStr)
  /執行插入操作
  sqlStr=“UPDATE tab1 SET field1=3”
  mConn.Execute(sqlStr)
  /執行修改操作
  五、關(guān)閉數據對象和鏈接對象
  在使用了ADO對象之后,一定要記住關(guān)閉它,因為它使用了一定的服務(wù)器資源。通過(guò)調用方法close實(shí)現關(guān)閉,然后再釋放它。
  Record Set.close
  Set Record Set=Nothing
  /關(guān)閉創(chuàng )建的數據對象
  mConn.close
  Set mConn=Nothing
  /關(guān)閉創(chuàng )建的鏈接對象
  至此,我們已給出了用ASP訪(fǎng)問(wèn)數據庫的全過(guò)程,包括創(chuàng )建數據源-創(chuàng )建鏈接-創(chuàng )建數據對象-操作數據對象-關(guān)閉并釋放。這其間由于應用面向對象思想,應該說(shuō)所有操作都比較簡(jiǎn)單,用戶(hù)需要注意的僅是對數據結構的了解,亦要清楚當前所操作的對象是什么,有什么屬性,等等。只要對這些有了清醒的認識,再加上ASP的強大功能,在網(wǎng)絡(luò )上應用你自己的數據庫,就再也不是什么難事了!
  本文最后給出一個(gè)例子,這是基于數據庫的ASP留言簿程序,數據庫結構如下:
  guestbook.mdb
  表lyb:
  xm char(100), ly char(255) , sj datetime
  文件guestbook.asp:
  
  
  lyb
  
  
  

留言簿


  

  
  

姓名:


  

留言:


  


  

  VALUE=“復原” NAME=“B2”>


  

  <%
  Set conn = Server.CreateObject(“ADODB.Connection”)
  conn.Open “l(fā)ybdsn”,“”,“”
  If Request(“task”)=“insert” then
  xm=Request(“xm”)
  sj = Date()
  sj = sj & “ ” & Hour(Time()) & “:” & Minute(Time())
  If Request(“l(fā)y”)=“” then
  Response.write(“留言不能不輸吧”)
  Response.end
  else
  ly=Request(“l(fā)y”)
  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 %>
  

  姓名:<%=Server.HTMLEncode(rs.Fields(“xm”).Value)%>

  留于:<%=Server.HTMLEncode(rs.Fields(“sj”).Value)%>

  留言:<%=Server.HTMLEncode(rs.Fields(“l(fā)y”).Value)%>
  <% rs.MoveNext
  loop %>
  
  


0