<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      ASP知識講座6

      [摘要]ASP與數據庫(一)在前面幾講中,我們已經學習了ASP的基本內容,靈活使用這些知識,你已經可以使用ASP建立一個Web站點了。但一般來說,一個真正的、完整的站點是離不開數據庫的,因為少量的數據,如網...

      ASP與數據庫(一)

      在前面幾講中,我們已經學習了ASP的基本內容,靈活使用這些知識,你已經可以使用ASP建立一個Web站點了。但一般來說,一個真正的、完整的站點是離不開數據庫的,因為少量的數據,如網頁訪問人數等完全可以存儲在文本文件中,但實際應用中,需要保存的數據遠不止這一點點,而且這些數據之間往往還有關聯,利用數據庫來管理這些數據,可以很方便的查詢和更新。數據庫有很多種,如:Fox數據庫(.dbf)、Access數據庫(.mdb)、Informix、Oracle和SQL Server等等,在本講座中,我將以Microsoft Access數據庫和SQL Server 7.0為例來說明ASP是如何訪問數據庫的。為什么選擇ASP呢?統計數據表明,SQL Server 7.0是當前最快、性價比最高的數據庫,而www.8848.net、www.dell.com、www.hotbot.com等許多大型的網站都是使用ASP技術創建的,所以ASP是比較容易掌握而且很實用的技術,你應該滿懷信心和勇氣地試著接近它、了解它,進而使用它。
      在進一步學習之前,要做哪些準備:
      1. 如果你沒有接觸過數據庫,建議先安裝Office中的Microsoft Access,了解一下數據庫的基本知識。
      2. 最好安裝Microsoft SQL Server 7.0。一旦安裝好,立馬就可使用,不需要什么設置,注意在Windows9.x中應安裝DeskTop版本,而7.0以前的版本只能安裝在NT Server中。
      3. 接下來所討論的內容,需要一個叫做MDAC(Microsoft Data Access Components)的組件,這個組件已經包含在ASP中,如果你想了解更多的相關內容,或者下載最新的版本,可以訪問http://www.microsoft.com/data。

      一、 與數據庫建立連接
      在正式開始之前,先介紹一下ADO--ActiveX Data Objects,剛接觸這個概念,你只要把ADO看作ASP與數據庫之間的橋梁就可以了。
      (一) 與Microsoft Access數據庫建立連接
      方法一:例wuf40.asp
      <% @LANGUAGE = VBScript %>
      <% ' wuf40.asp
      Option Explicit
      Dim Cnn, StrCnn
      ' 1 - 創建 Connection 對象
      Set Cnn = Server.CreateObject("ADODB.Connection")
      StrCnn = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\asp") & "\NorthWind.mdb;"
      ' 2 - 使用 Connection 對象的 Open 方法打開數據庫
      Cnn.Open StrCnn

      Response.Write Server.MapPath("\asp") & "\NorthWind.mdb;" & "<br>"
      Response.Write "數據庫連接成功: " & Cnn.State & "<br>"
      ' 3 - 使用 Connection 對象的 Close 方法關閉連接
      Cnn.close
      Response.Write "數據庫已經關閉: " & Cnn.State
      ' 4 - 將Connection 對象從內存中刪除,以釋放資源
      Set Cnn = Nothing
      %>
      Northwind.mdb是Microsoft Access97自帶的一個示例數據庫,一般位于目錄"Microsoft Office\Office\Samples"下,你可以自己找一下,然后將這個文件拷至Web服務器相應目錄下(本例中放在C:\InetPub\home\asp下)。
      在這里,Server對象的MapPath方法將指定的虛擬路徑轉換為真實的文件路徑,最終結果類似:C:\InetPub\home\asp\Northwind.mdb。
      方法二:用OLE DB創建Microsoft Access連接,下面列出關鍵部分。
      Set Cnn = Server.CreateObject("ADODB.Connection")
      StrCnn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Inetpub\home\asp\Northwind.mdb"
      Cnn.Open StrCnn

      (二) 與SQL Server數據庫建立連接
      方法一:用OLE DB連接SQL Server,詳見例程wuf41.asp。
      Set Cnn = Server.CreateObject("ADODB.Connection")
      StrCnn = "Provider=sqloledb; User ID=sa; Password=; Initial Catalog=pubs; Data Source=ICBCZJP"
      Cnn.Open StrCnn 
      Initial Catalog后指定數據庫名,Data Source后為機器名(即網絡→屬性→標識中的計算機名)或IP地址(需要安裝DNS服務)。
      方法二:
      Set Cnn = Server.CreateObject("ADODB.Connection")
      StrCnn = "Driver={SQL Server};Server=ICBCZJP;UID=sa;PWD=;Database=pubs"
      Cnn.Open StrCnn

      除了上述的兩種方法之外,當然還可使用許多文章、資料中介紹的最經典的方法:使用ODBC生成連接。就是先在Web服務器控制面板的"ODBC Data Sources"中建立一個連接,然后在ASP中使用類似"StrCnn ="DSN=ADOCnn; UID = sa;PWD=;Database=pubs""的連接字符串。這里不詳細介紹,一來這不是最好的方法,二來其他資料都介紹了該方法。
      另外,有興趣可下載例程wuf42.asp看看如何使用Connection對象的ConnectionTimeout和ConnectionString屬性。 二、 數據庫從這里起步--檢索數據庫中已存在的數據
      現在假定你已有最基本的數據庫知識,知道如何使用Microsoft Access打開Northwind.mdb中的"運貨商"表,看到表中儲存的幾條數據。現在問題是如何使用ASP在瀏覽器中顯示這些數據,下面介紹三種方法。
      特別提醒:如果你的數據庫底子較薄,只要會使用第二種方法就行了,切不可貪多,以免走火入魔,切記!切記!

      方法一:只使用 Connection 對象。例wuf43.asp
      <% @LANGUAGE = VBScript %>
      <% ' wuf43.asp
      Option Explicit
      '這一句是非常重要的, 它可以確保所看到的數據不是緩存在客戶端的數據, 
      '而是服務器端隨時更新過的最新數據
      Response.Expires = 0

      '第一部分: 建立連接

      Dim Cnn, StrCnn
      Set Cnn = Server.CreateObject("ADODB.Connection")
      StrCnn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Inetpub\home\asp\Northwind.mdb"
      Cnn.Open StrCnn

      '第二部分: 使用 Connection 對象的 Execute 方法得到記錄集

      Dim StrSQL, rsTest
      '下面是一句SQL語句(結構化查詢語句), 本講座不具體介紹
      '建議找本書看看,基本使用還是比較簡單的,一學就會
      '這一句的意思是從 運貨商 表中選出所有的數據
      StrSQL = "Select * From 運貨商"
      Set rsTest = Cnn.Execute(StrSQL)
      %>
      <HTML>
      <BODY>
      <% '第三部分: 將得到的記錄集顯示到瀏覽器上

      '循環至記錄末尾 - 一行一行、一條記錄一條記錄的顯示
      Do While Not rsTest.EOF 

      '下面這兩行的作用是一樣的, 即 rsTest("運貨商ID") 等同于 rsTest(0)
      Response.Write rsTest("運貨商ID") & " " & rsTest("公司名稱") & " " & rsTest("電話") & " " & "<BR>"
      'Response.Write rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"

      '移到下一條記錄 - 這一句可千萬不能少 否則就陷入死循環
      rsTest.MoveNext 
      Loop

      '第四部分: 打掃戰場
      Cnn.close
      Set rsTest = Nothing: Set Cnn = Nothing
      %>
      </BODY>
      </HTML>
      這個例子是很簡單的,第三部分顯示數據是數據庫典型的輸出樣式,你可以參照以前所學的知識加上表格和顏色美化輸出結果。
      非初級用戶可以參考wuf44.asp看看Execute方法的完整使用。

      方法二:通過創建 Recordset 對象--切記初學者只求掌握這種方法便夠了。
      例:wuf45.asp,其他部分同wuf43.asp,關鍵在于程序的第二部分。
      '第二部分: 通過創建 RecordSet 對象得到記錄集
      Dim StrSQL, rsTest
      '創建 Recordset 對象
      Set rsTest = Server.CreateObject("ADODB.Recordset")

      StrSQL = "Select 運貨商ID,電話,公司名稱 From 運貨商 Where 電話 = '(503) 555-9931'"
      '將 Recordset 對象附加到連接 Cnn
      Set rsTest.ActiveConnection = Cnn
      '使用 Recordset 對象的 Open 方法打開記錄集
      rsTest.Open StrSQL
      現在讓我們看看Recordset對象Open方法的完整用法,例wuf48.asp。
      <% @LANGUAGE = VBScript %>
      <% ' wuf48.asp
      Option Explicit
      Response.Expires = 0
      %>
      <!--#include file="adovbs.inc"-->
      <%
      '第一部分: 建立連接
      Dim Cnn, StrCnn
      Set Cnn = Server.CreateObject("ADODB.Connection")
      StrCnn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Inetpub\home\asp\Northwind.mdb"
      Cnn.Open StrCnn

      '第二部分: 通過創建 RecordSet 對象得到記錄集
      Dim rsTest
      Set rsTest = Server.CreateObject("ADODB.Recordset")

      rsTest.Open "運貨商",Cnn,adOpenForwardOnly,adLockReadOnly,adCmdTable
      %>
      <HTML>
      <BODY>
      <% '第三部分: 將得到的記錄集顯示到瀏覽器上
      Do While Not rsTest.EOF 
      Response.Write rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
      rsTest.MoveNext 
      Loop

      '第四部分: 打掃戰場
      rsTest.Close: Cnn.Close
      Set rsTest = Nothing: Set Cnn = Nothing
      %>
      </BODY>
      </HTML>
      分析:
      1.首先看看關鍵句:
      rsTest.Open "運貨商",Cnn,adOpenForwardOnly,adLockReadOnly,adCmdTable
      第一個參數可以是表名(如:運貨商),也可以是SQL語句(如wuf45.asp)。
      第二個參數指定當前的連接。
      第三個參數指示CursorType,確定提供者打開 Recordset 時應該使用的游標類型。這里采用僅向前移動的游標。
      第四個參數指示LockType,確定提供者打開 Recordset 時應該使用的鎖定(并發)類型。這里指定為只讀。
      第五個參數與第一個參數相關,如本例中第一個參數為表名,則第五個參數使用adCmdTable,若第一個參數為SQL語句,則第該參數為adCmdText,如:
      rsTest.Open "Select * From 運貨商",Cnn,adOpenForwardOnly,adLockReadOnly,adCmdText
      我想不見得大部人都能真正搞懂這五個參數的意思,沒關系,剛開始只要照搬會用就行,以后我們會不斷接觸,熟了便能生巧。
      關于CursorType和LockType這兩個參數,將在下講詳細闡述,僅僅檢索數據只需按本例設置就可以了。
      2.這五個參數,也可以利用Recordset對象的屬性來設置,如例wuf46.asp。
      '第二部分: 通過創建 RecordSet 對象得到記錄集
      Dim rsTest
      Set rsTest = Server.CreateObject("ADODB.Recordset")
      rsTest.ActiveConnection = Cnn
      rsTest.CursorType = adOpenForwardOnly
      rsTest.LockType = adLockReadOnly
      rsTest.Open "運貨商", , , ,adCmdTable
      3. 再看看這句:<!--#include file="adovbs.inc"-->。
      (1) 因為使用了adOpenForwardOnly,adLockReadOnly,adCmdText這樣的常數,所以需要將adovbs.inc這個文件包含進來。
      (2) adovbs.inc這個文件一般位于目錄Program Files\Common Files\SYSTEM\ADO下,你可將它拷至Web服務器當前目錄(本講下載包中也有該文件)。
      (3) 用記事本打開這個文件看一下,就明白為什么需要這個文件了。

      方法三:通過引入 Command 對象--這個應該在你有能力的前提下研究。
      <% @LANGUAGE = VBScript %>
      <% ' wuf47.asp
      Option Explicit
      Response.Expires = 0
      %>
      <!--#include file="adovbs.inc"-->
      <%
      '第一部分: 建立連接
      Dim Cnn, StrCnn
      Set Cnn = Server.CreateObject("ADODB.Connection")
      StrCnn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Inetpub\home\asp\Northwind.mdb"
      Cnn.Open StrCnn

      '第二部分: 通過創建 Command 對象得到記錄集
      Dim StrSQL, rsTest, cmdTest
      '創建 Command 對象
      Set cmdTest = Server.CreateObject("ADODB.Command")

      StrSQL = "SELECT MAX(數量) FROM 訂單明細"
      cmdTest.CommandText = StrSQL
      cmdTest.CommandType = adCmdText '表明命令類型為 SQL 語句
      Set cmdTest.ActiveConnection = Cnn
      '使用 Command 對象的 Execute 方法得到記錄集。
      Set rsTest = cmdTest.Execute
      %>
      <HTML>
      <BODY>
      <% '第三部分: 將得到的記錄集顯示到瀏覽器上

      Do While Not rsTest.EOF 
      Response.Write rsTest(0) & "<BR>"
      rsTest.MoveNext 
      Loop

      '第四部分: 打掃戰場

      rsTest.Close: Cnn.Close
      Set rsTest = Nothing: Set cmdTest=Nothing: Set Cnn = Nothing
      %>
      </BODY>
      </HTML>
      關于Command 對象的使用以后還會在數據庫的深入編程中重點講解。

      本講主要介紹了如何與數據庫連接并檢索數據庫數據,初學者難免會有點糊涂,切記,你只需要學會以下知識點即可:
      1. 如何使用OLE DB與Microsoft Access數據庫建立連接;
      2. 如何使用OLE DB與Microsoft SQL Server數據庫建立連接;
      如何通過創建Recordset對象檢索數據庫中的數據。



      標簽:ASP知識講座6 
      日韩精品一区二区三区高清