ADO基礎及用Asp訪問數據庫

/*以前給老師當助手寫教程,現把個別篇章放上來*/

5.5  ADO基礎
ADO(ActiveX Data Objects)是Microsoft公司推出的一項資料訪問技術。使用ADO,可以編寫緊湊簡明的腳本連接到OLE DB兼容的數據源,如數據庫、電子表格、順序數據文件或電子郵件目錄等。可以把它和ASP結合起來,建立提供數據庫信息的網頁內容,對數據庫進行查詢、插入、更新、刪除等操作。

5.5.1 Connection 對象
Connection對象用於建立和管理應用程序與數據源間的連接,也可用它來執行一個命令。Connection對象的屬性和方法可用來打開和關閉數據庫的連接,在ADO中,可以有多個Connection對象,分別指向不同的數據源。

5.5.2 Connection 對象的使用

在使用之前必須創立該對象,其格式爲:
<% Set cn= Server.CreateObject("ADODB.Connection") %>
字符串"ADODB.Connection"是用來創建Connection物件的PROGID。另外,也可用<OJECT>標記來創建。例如:
<OBJECT RUNAT=Server ID=cn PROGID="ADODB.Connection"></OBJECT>
   創建Connection對象後,就可以調用Open方法來建立與資料源的連接了。對於SQL服務器中的Guests數據庫和Microsoft Access數據庫文件Guests.mdb,可用以下幾種方式打開:

(1) 使用驅動程序
<% cn.Open"Driver={SQL Server};Database=Guest;Server=(Local);UID=sa;PWD=" %>
其中,Driver指定數據源驅動程序的名稱,SQL Server使用{SQL Server}。Database指定所請求的數據庫。Server指定數據源服務器名稱,設爲Local時,表示使用SQL Server的本地副本。

<%cn.Open"DBQ="&Server.mappath("Guests.mdb")&";Driver={Microsoft Access Driver(*.mdb) "} %>
上面是連接Microsoft Access數據庫文件的寫法,其中DBQ是指向Access數據庫的地址。

(2 )   使用OLE DB的Provider
<% cn.Open"Provider=SQLOLEDB.1; User ID=sa; Password=; Initial Catalog=Guest; Data Source=MLS" %>
其中,Provider指定數據提供者。Initial Catalog指向在SQL Server上的待訪問的數據庫。Data Source指定SQL Server的計算機名或IP地址。

<% cn.Open"Provider=Microsoft.jet.oledb.4.0;Data Source=" &Server.mappath("Guests.mdb") %>
上面是用Provider連接Microsoft Access數據庫文件的寫法

( 3 )   利用ODBC的DSN
我們以SQL Server爲例,首先在“控制面板”中選中“ODBC數據源”,出現如圖5.10所示接口。選擇“系統DSN”選項卡。


圖5.10   ODBC數據源


圖5.11  “創建數據源”的對話框,選擇SQL Server


圖5.12  輸入DSN的名稱並指定SQL Server所在服務器


圖5.13  選擇SQL Server驗證登陸ID方式


圖5.14  選擇數據庫文件


圖5.15  其它一些設置

創建DSN連接後,可以創建Connection對象,用Open方法來建立數據源連接了。
可以先設置ConnectionString 屬性,再調用Open方法。例如:
<% Set cn= Server.CreateObject("ADODB.Connection")
cn.ConnectionString="DSN=Guests;UID=sa;PWD="
cn.Open %>
或者直接將連接串作爲參數來調用:
<% Set cn= Server.CreateObject("ADODB.Connection")
cn.Open="DSN=Guests;UID=sa;PWD=" %>

例5—6  SQL數據庫中表Guests中的所有記錄,表Guests定義如表5.16所示。
        

① 向表Guests中插入一條“Name:"李四",PassWord:"li"”的記錄。
程序如下:
<% @ language=vbscript %>
<% Set cn= Server.CreateObject("ADODB.Connection")
 cn.Open"Provider=SQLOLEDB.1; User ID=sa; Password=; Initial Catalog=Guest; Data Source=MLS"
 cn.execute"insert into Guests(name.password)value( '李四','li' ) "  '用insert方法插入一條記錄
 cn.close  '關閉數據庫連接
%>
② 查詢Guests表的所有記錄
<% Set cn= Server.CreateObject("ADODB.Connection")
 cn.Open"Provider=SQLOLEDB.1; User ID=sa; Password=; Initial Catalog=Guest; Data Source=MLS"
Set Rst=cn.execute("select * from Guests") '產生一個記錄集,並賦值
 Do While not Rst.eof  '當記錄集沒處理完時
    Response.Write "Name:"&Rst("Name")&"  "
Response.Write "PassWord:"&Rst("PassWord")&"<br>"
Rst.MoveNext  '指針指向下一條記錄
Loop  '循環繼續
Rst.close
cn.close
%>
③ 刪除User表中"明明"記錄
<% Set cn= Server.CreateObject("ADODB.Connection")
 cn.Open"Provider=SQLOLEDB.1; User ID=sa; Password=; Initial Catalog=Guest; Data Source=MLS"
cn.execute("delete * from Guests Where Name='明明'")   '用execute方法執行SQL刪除語句
cn.close
%>

例5—7 用記錄集讀取SQL數據庫中表Guests的所有記錄。
程序如下:
<% @ language=vbscript %>
<!--#include file="Check.asp"-->  '用於包含所需要調用的文件,若目錄不同,使用Virtual參數
<% Set cn= Server.CreateObject("ADODB.Connection")
 cn.Open"Provider=SQLOLEDB.1; User ID=sa; Password=; Initial Catalog=Guest; Data Source=MLS"
 Set Rst=Server.CreateObject("Adodb.Recordset")  '創建一個記錄集
 Rst.Open " select * from Guests " ,cn,1,3    '賦值給記錄集,1,3是定義鎖定類型和遊標類型
 Do While not Rst.eof  '當記錄集沒處理完時
 Response.Write "Name:"&Rst.fields("Name")&"  "
Response.Write "PassWord:"&Rst.fields("PassWord")&"<br>"
Rst.MoveNext   '指針指向下一條記錄
Loop 
 Rst.close   'Close方法關閉該記錄集並且釋放所有在該記錄集內的飽含數據
 Cn.close  
%>

例5—8 利用記錄集和表單向數據表添加記錄。

步驟1、在表單裏面建立兩個文本輸入框和一個提交按鈕。
<form name="form1" method="get" action="">
  <p>
    <input type="text" name="name">
    <input type="text" name="password">
  </p>
  <p>
    <input type="submit" name="Submit" value="提交">
</p>
</form>

步驟2、編寫代碼事件檢索Form集合(即表單提交的數據)並將其寫進Guest表中。
<% if Request.ServerVariables("QUERY_STRING")<>""then%>
<%if  Request.QueryString("name")<>"" and Request.QueryString("password")<>""then%>
<%  Strname =Request.QueryString("name")
    Strpassword =Request.QueryString("password")
Set CN =Server.CreateObject("ADODB.connection")
CN.open "DBQ ="& Server.MapPath("user.mdb")& ";Driver ={Microsoft SQL Driver(*.mdb)}"
Set RS=Server.CreateObject("ADODB.Recordset")
RS.open "select * form guest",cn,1,3
RS.addnew
RS("name")=Strname
RS("password")=Strpassword
RS.update
RS.close
CN.close
%>
<%end if%>
<%end if %>

步驟3、將步驟2的代碼放到步驟1的前面,即可實現一個簡單的數據的插入過程。

5.5.3 Command對象和Parameter對象
Command對象是ADO的核心,它含有使用連接、處理查詢以及返回記錄集所需要的全部信息。

⑴ 用Command對象創建記錄集

例5—9 利用Command對象實現Guests表的瀏覽

<% @ language=vbscript %>
<% Set cn= Server.CreateObject("ADODB.Connection")
 cn.Open"Provider=SQLOLEDB.1; User ID=sa; Password=; Initial Catalog=Guest; Data Source=MLS"
 Set Mycomm= Server.CreateObject("ADODB.Command")  '創建了命令對象的一個實例Mycomm
 Mycomm.commandtext= 'select * from Guests'   'CommandText屬性指定要執行什麼SQL語句
 Set Mycomm.ativeconnection=cn   'ActiveConnection屬性把命令對象和一個打開的數據連接聯繫在一起
 Set Rst=Mycomm.execute  '調用Execute方法執行這個命令
 Do while not Rst.eof
    Response.Write "Name:"&Rst ("Name")&"  "
Response.Write "PassWord:"&Rst ("PassWord")&"<br>"
   Rst.MoveNext  
Loop
Rst.close  
Cn.close
%>



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