![ADO數(shù)據(jù)訪問接口培訓教程課件_第1頁](http://file4.renrendoc.com/view/bd0952963acdb233cda3d0d6435342e4/bd0952963acdb233cda3d0d6435342e41.gif)
![ADO數(shù)據(jù)訪問接口培訓教程課件_第2頁](http://file4.renrendoc.com/view/bd0952963acdb233cda3d0d6435342e4/bd0952963acdb233cda3d0d6435342e42.gif)
![ADO數(shù)據(jù)訪問接口培訓教程課件_第3頁](http://file4.renrendoc.com/view/bd0952963acdb233cda3d0d6435342e4/bd0952963acdb233cda3d0d6435342e43.gif)
![ADO數(shù)據(jù)訪問接口培訓教程課件_第4頁](http://file4.renrendoc.com/view/bd0952963acdb233cda3d0d6435342e4/bd0952963acdb233cda3d0d6435342e44.gif)
![ADO數(shù)據(jù)訪問接口培訓教程課件_第5頁](http://file4.renrendoc.com/view/bd0952963acdb233cda3d0d6435342e4/bd0952963acdb233cda3d0d6435342e45.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章
ADO數(shù)據(jù)訪問接口6第6章ADO數(shù)據(jù)訪問接口61內(nèi)容提要本章介紹ADO的基本概念,以及如何在ASP程序中使用ADO的對象。介紹ADO的對象Connection、RecordSet和Command的使用。介紹SQL語句的基本概念及如何利用SQL語句操作數(shù)據(jù)庫。并介紹訪問數(shù)據(jù)庫的三個基本格式。內(nèi)容提要本章介紹ADO的基本概念,以及如何在ASP程序中使用2ADO數(shù)據(jù)訪問接口概述
ADO常用的四種對象及其功能如下。(1)
連接對象(Connection):用來連接數(shù)據(jù)庫。(2)
記錄集對象(RecordSet):用來保存查詢語句返回的結(jié)果。(3)
命令對象(Command):用來執(zhí)行SQL(StructuredQueryLanguage)語句或者SQLServer的存儲過程。(4)
參數(shù)對象(Parameter):用來為存儲過程或查詢提供參數(shù)。下面介紹常用的連接對象(Connection)、記錄集對象(RecordSet)、命令對象(Command)。ADO數(shù)據(jù)訪問接口概述ADO常用的四種對象及其功能如下。3Connection數(shù)據(jù)對象
與數(shù)據(jù)庫的所有通信都通過一個打開的Connection對象進行。對一個數(shù)據(jù)庫進行數(shù)據(jù)的插入和讀取之前,必須先打開數(shù)據(jù)庫的連接數(shù)據(jù)庫表是由行和列組成的一個二維表,當使用ADO打開數(shù)據(jù)庫的時候,會有一個指針指向某一行記錄,默認的情況下該指針指向數(shù)據(jù)庫表的第一行。假定該指針叫“rs”,如果要訪問數(shù)據(jù)庫表的字段,可以用圖6-1所示的方法。Connection數(shù)據(jù)對象與數(shù)據(jù)庫的所有通信都通過一個打4關(guān)系型數(shù)據(jù)庫表與指針
其中:寫法rs(0)、rs(“學號”)、rs.Fields(0)和rs.Fields(“學號”)是相同的,寫法rs(3)、rs(“語文”)、rs.Fields(3)和rs.Fields(“語文”)是相同的,其余類推。根據(jù)上表和注釋:rs(4).Name等價于rs.Fields(4).Name等價于"數(shù)學"rs(1).Name等價于rs.Fields(1).Name等價于"性別"假設當前的指針指向第三行記錄,那么rs(2).Value等價于rs("姓名")等價于rs(2)等價于"小張"rs(4).Value等價于rs(4)等價于rs("數(shù)學")等價于60關(guān)系型數(shù)據(jù)庫表與指針其中:寫法rs(0)、rs(“學號”)5打開和關(guān)閉數(shù)據(jù)庫連接
要建立與一個數(shù)據(jù)庫的連接,首先創(chuàng)建Connection對象的一個實例,然后調(diào)用Connection對象的Open方法打開一個連接通過程序6-01.asp輸出數(shù)據(jù)庫的表頭。
打開和關(guān)閉數(shù)據(jù)庫連接要建立與一個數(shù)據(jù)庫的連接,首先創(chuàng)建Co6數(shù)據(jù)庫調(diào)用的基本格式格式一:數(shù)據(jù)庫調(diào)用的基本格式格式說明:利用Execute方法執(zhí)行SQL語句
'第一步:建立Connection對象
setconn=Server.CreateObject("ADODB.Connection")'第二步:使用Connection對象的Open方法建立數(shù)據(jù)庫連接conn.Open("driver={MicrosoftAccessDriver(*.mdb)};dbq="&_ Server.MapPath("person.mdb"))'第三步:使用Connection對象的Execute方法執(zhí)行SQL語句'如果執(zhí)行查詢語句setrs=conn.Execute("數(shù)據(jù)查詢語句")'如果執(zhí)行數(shù)據(jù)操縱語句conn.Execute("數(shù)據(jù)操縱語句")數(shù)據(jù)庫調(diào)用的基本格式格式一:數(shù)據(jù)庫調(diào)用的基本格式7格式一的特點格式一的特點是:RecordSet對象的實例rs是利用Connection對象的Execute方法建立的,建立的rs對象的指針只能向后,不能向前移動。第一步建立了Connection對象的一個實例,第二步利用Open方法和用Access數(shù)據(jù)驅(qū)動程序打開服務器上的某個Access數(shù)據(jù)庫,第三步執(zhí)行SQL語句。
格式一的特點格式一的特點是:RecordSet對象的實例rs8Connection對象
參數(shù)說明用法DsnODBC數(shù)據(jù)源的名稱Dsn="ODBC名稱"User數(shù)據(jù)庫登錄的用戶名User="DatabaseUser"Password數(shù)據(jù)庫登錄的密碼Password="UserPassword"Driver數(shù)據(jù)庫驅(qū)動程序的類型Access用Access的驅(qū)動,其他數(shù)據(jù)數(shù)據(jù)庫用其他驅(qū)動。Dbq數(shù)據(jù)庫的物理路徑Dbq="C:\accdb.mdb"Provider數(shù)據(jù)提供者Provider="Microsoft.Jet.OLEDB.4.0"Connection對象參數(shù)說明用法DsnODBC數(shù)據(jù)源的9其他類型的數(shù)據(jù)庫連接
連接的數(shù)據(jù)庫說明OracleDriver={MicrosoftODBCforOracle};Server=服務器地址;User=;Password=SQLServerServer=服務器地址;Database=數(shù)據(jù)庫名;uid=用戶名;pwd=''ExcelDriver={MicrosoftExcelDriver(*.xls)};Dbq=Excel文件的物理路徑文本文件Driver={MicrosoftTextDriver(*.txt;*.csv)};DefaultDir=文件的物理路徑其他類型的數(shù)據(jù)庫連接連接的數(shù)據(jù)庫說明OracleDrive10Connection對象的方法和屬性
方法名稱說明用法Open()建立連接Conn.Open("數(shù)據(jù)庫連接串")Close()關(guān)閉與數(shù)據(jù)庫連接Conn.Close()Execute()執(zhí)行數(shù)據(jù)庫查詢Conn.Execute(SQL語句或者表名)BeginTrans()開始事務處理Conn.BeginTrans()CommitTrans()提交事務處理Conn.CommitTrans()RollbackTrans()取消事務處理Conn.RollbackTRans()Connection對象的方法和屬性方法名稱說明用法Ope11Connection對象的屬性
屬性名稱說明用法CommandTimeoutExecute方法最長執(zhí)行時間默認值為30秒鐘,可以修改ConnectionTimeoutOpen方法最長執(zhí)行時間默認值為15秒,可以修改ConnectionString數(shù)據(jù)庫的連接串可以將連接串賦值給該屬性Mode用來設置操作權(quán)限1為只讀、2為只寫、3為可讀可寫Version獲取ADO的版本信息Conn.VersionConnection對象的屬性屬性名稱說明用法Comman12向瀏覽器輸出數(shù)據(jù)庫內(nèi)容
向瀏覽器輸出了表頭后,可以利用RecordSet記錄集返回數(shù)據(jù)庫表中的數(shù)據(jù),如程序6-02.asp所示。
向瀏覽器輸出數(shù)據(jù)庫內(nèi)容向瀏覽器輸出了表頭后,可以利用Rec13
輸出表中所有數(shù)據(jù)
用一個循環(huán)輸出數(shù)據(jù)庫中所有的數(shù)據(jù)。當數(shù)據(jù)庫打開時,rs對象定位在數(shù)據(jù)庫表的第一條記錄上,輸出第一條記錄的內(nèi)容;要想輸出第二條記錄,必須執(zhí)行rs.MoveNext()指令,讓它移動到下一條記錄。rs.BOF(BeginOfFile,文件開頭)和rs.EOF(EndOfFile,文件結(jié)尾)這兩條指令判斷記錄指針是否移動最前面和最后面,BOF的位置是在第一條記錄之前,EOF是在最后一條記錄之后。如果rs指針在最后一條記錄上,再執(zhí)行一次MoveNext()時則rs.EOF為真。如果rs.EOF或者rs.BOF為真,這時讀取數(shù)據(jù)會出錯。
輸出表中所有數(shù)據(jù)用一個循環(huán)輸出數(shù)據(jù)庫中所有的數(shù)據(jù)。當數(shù)據(jù)14數(shù)據(jù)庫表的結(jié)構(gòu)
數(shù)據(jù)庫表的結(jié)構(gòu)15使用事務
事務在實際編程中使用比較頻繁。事務典型的特征是:事務中一般包含幾個事件,只有幾個事件同時執(zhí)行成功,整個事務才被執(zhí)行,否則事務中的事件將不被執(zhí)行。比如:在ATM機上取200元,需要執(zhí)行兩個操作,1、從銀行賬戶上減去200;2、ATM機將錢返給用戶。這兩個事件將構(gòu)成事務。在實際編程中,需要同時成功,同時失敗。使用方法如程序6-05.asp所示。
使用事務事務在實際編程中使用比較頻繁。事務典型的特征是:事16Connection對象中的Errors集合
Error對象是Connection對象的子對象。數(shù)據(jù)庫程序運行的時候,一個錯誤就是一個Error對象,所有的Error對象就組成了Errors集合,又稱為錯誤集合??梢岳肊rrors集合的Count屬性來判斷是否有錯誤發(fā)生,還可以提取出錯誤的描述,最后根據(jù)錯誤的類型,給出相應的解決措施。Errors對象提供一些屬性來得到錯誤信息
Connection對象中的Errors集合Error對象17Error對象的屬性
參數(shù)說明用法Number錯誤編號Err.NumberDescription錯誤描述Err.DescriptionSource發(fā)生錯誤的原因Err.SourceHelpContext錯誤的提示文字Err.HelpContextHelpFile錯誤的提示文件Err.HelpFileNativeError數(shù)據(jù)庫服務器產(chǎn)生的錯誤Err.NativeErrorError對象的屬性參數(shù)說明用法Number錯誤編號Err18RecordSet數(shù)據(jù)對象
記錄集可以用來代替表中的記錄。一個記錄集包含一條或多條記錄(行),每條記錄包括一個或多個域(字段)。在任何時刻,只有一條記錄是當前記錄。創(chuàng)建記錄集對象的一個實例,可以使用Connection對象的Execute()方法,用Execute()創(chuàng)建的記錄集指針只能向下,而不能向上移動,即不能執(zhí)行MoveFirst()和MovePrevious()指令。
RecordSet數(shù)據(jù)對象記錄集可以用來代替表中的記錄。一19RecordSet對象的屬性及方法
利用RecordSet對象的屬性和方法可以完全操作一個數(shù)據(jù)庫,理論上只要SQL語句可以完成的操作利用RecordSet對象都可以實現(xiàn)。RecordSet對象的屬性和方法很多,常用的方法如表6-6所示。
RecordSet對象的屬性及方法利用RecordSet對20RecordSet對象的方法
方法說明用法Open()打開記錄集rs.Open()Close()關(guān)閉記錄集rs.Close()Requery重新打開記錄集rs.Requery()Move()當前記錄前后移動條數(shù)rs.Move(4)向后面移動4行MoveFirst()移動到第一條記錄rs.MoveFirst()MoveNext()移動到下一條記錄rs.MoveNext()MovePrevious()移動到記錄集中的上一條記錄rs.MovePrevious()MoveLast()移動到記錄集的最后一條記錄rs.MoveLast()AddNew()向記錄集中添加一條新記錄rs.AddNew()Delete()從記錄集中刪除當前記錄rs.Delete()Update()保存對當前記錄所做的修改rs.Update()UpdateBatch()保存對一個或多個記錄的修改rs.UpdateBatch()CancelBatch()取消一批更新rs.CancelBatch()RecordSet對象的方法方法說明用法Open()打開記21RecordSet對象的屬性
屬性說明用法ActiveConnection當前記錄集用的數(shù)據(jù)連接rs.ActiveConnection=connRecordCounts記錄集的總數(shù)rs.RecordCountsBOF記錄集的開頭rs.BOFEOF記錄集的結(jié)尾rs.EOFPageCount返回記錄集中的邏輯頁數(shù)rs.PageCountPageSize返回邏輯頁中的記錄個數(shù)rs.PageSize默認值是10AbsolutePage指定當前的頁rs.AbsolutePageAbsolutePosition指定當前的記錄rs.AbsolutePositionRecordSet對象的屬性屬性說明用法ActiveCon22使用RecordSet對象打開數(shù)據(jù)庫
格式二:數(shù)據(jù)庫調(diào)用的基本格式格式說明:利用RecordSet對象打開數(shù)據(jù)庫表
'第一步:建立Connection對象setconn=Server.CreateObject("ADODB.Connection")'第二步:使用Connection對象的Open方法建立數(shù)據(jù)庫鏈接conn.Open("driver={MicrosoftAccessDriver(*.mdb)};dbq="&_Server.MapPath("Access數(shù)據(jù)庫"))'第三步:建立RecordSet對象setrs=Server.CreateObject("ADODB.Recordset")'第四步:利用RecordSet對象的Open方法打開數(shù)據(jù)庫rs.Open"SQL語句",conn,打開方式,鎖定類型使用RecordSet對象打開數(shù)據(jù)庫格式二:數(shù)據(jù)庫調(diào)用的基23打開類型的四個參數(shù):
(1)adOpenFowardOnly:對應的數(shù)字是0(默認值),記錄集只能向前移動。這些參數(shù)對應的數(shù)字,都保存在系統(tǒng)文件Adovbs.inc中。(2)adOpenKeyset:對應的數(shù)字是1,記錄集可以向前或向后移動。如果另一個用戶刪除或改變一條記錄,記錄集中將反映這個變化。但是,如果另一個用戶添加一條新記錄,新記錄不會出現(xiàn)在記錄集中。(3)adOpenDynamic:對應的數(shù)字是2,使用動態(tài)游標,可以在記錄集中向前或向后移動。其他用戶造成的記錄的任何變化都將在記錄集中有所反映。(4)adOpenStatic。對應的數(shù)字是3,使用靜態(tài)游標,可以在記錄集中向前或向后移動。但是,靜態(tài)游標不會對其他用戶造成的記錄變化有所反映。打開類型的四個參數(shù):(1)adOpenFowardOnly24鎖定類型的參數(shù)如下
(1)adLockReadOnly:只讀鎖定,對應的數(shù)字是1(默認值),不能修改記錄集中的記錄。(2)adLockPessimistic:悲觀鎖定,對應的數(shù)字是2,指定在編輯一個記錄時,立即鎖定它。進入鎖定
rs("數(shù)學")=rs("數(shù)學")+100
rs("語文")=rs("語文")+100
rs.Update() 解除鎖定鎖定類型的參數(shù)如下(1)adLockReadOnly:只讀25鎖定類型的參數(shù)
(3)adLockOptimistic:樂觀鎖定,對應的數(shù)字是3,指定只有調(diào)用記錄集的Update方法時,才鎖定記錄。
rs("數(shù)學")=rs("數(shù)學")+100
rs("語文")=rs("語文")+100進入鎖定
rs.Update() 解除鎖定(4)adLockBatchOptimistic:批次樂觀鎖定,對應的數(shù)字是4,指定記錄只能成批地更新。
ForI=1to10 rs("語文")=rs("語文")+100
rs("數(shù)學")=rs("數(shù)學")+100
rs.MoveNext() Next進入鎖定
rs.UpdateBatch() 解除鎖定鎖定類型的參數(shù)(3)adLockOptimistic:樂觀26RecordSet當數(shù)據(jù)庫第一次打開時,RecordSet指針定位在第一條記錄上,可以利用AbsolutePosition直接定位到某條記錄上,基本的語法是:AbsolutePosition=N,如程序6-07.asp文件所示。
RecordSet當數(shù)據(jù)庫第一次打開時,RecordSet指27AbsolutePage還有一個屬性是AbsolutePage,當調(diào)用AbsolutePage時,系統(tǒng)將對數(shù)據(jù)記錄進行分頁,默認每頁為10條記錄,AbsolutePage為幾,記錄指針就自動定位到第幾頁的第一條記錄上。比如說,AbsolutePage=3,則記錄指針就自動定位到第21條記錄上去了,此時AbsolutePosition=21。計算公式為:AbsolutePosition=(Absolute1)*PageSize,PageSize默認是10,也可以設置為其他的值。使用方法如程序6-08.asp所示
AbsolutePage還有一個屬性是AbsolutePag28實現(xiàn)數(shù)據(jù)庫的分頁顯示
數(shù)據(jù)庫中可能有成千上萬條記錄,如果一次都顯示出來的話消耗的時間太多。下面通過一個案例分成六個版本實現(xiàn)數(shù)據(jù)庫的分頁顯示。
實現(xiàn)數(shù)據(jù)庫的分頁顯示數(shù)據(jù)庫中可能有成千上萬條記錄,如果一次29案例6-1分頁顯示首先利用格式二將數(shù)據(jù)庫表中某頁的所有記錄輸出,如程序pageV1.asp所示。在程序中加上翻頁的超級鏈接就可以實現(xiàn)翻頁,如程序pageV2.asp所示。可以利用PageCount屬性得到總頁數(shù),修正這些可能出現(xiàn)的錯誤,得到版本三。如程序pageV3.asp所示。加入超級鏈接的版本四如程序pageV4.asp所示,將姓名一列加上超級鏈接。
偶數(shù)行和奇數(shù)行可顯示不同的背景顏色。版本五將實現(xiàn)這些功能,如程序pageV5.asp所示。
案例6-1分頁顯示首先利用格式二將數(shù)據(jù)庫表中某頁的所有記錄30Command數(shù)據(jù)對象
Command對象又稱為命令對象,可以執(zhí)行SQL語句和執(zhí)行SQLServer的存儲過程。通過傳遞SQL指令對數(shù)據(jù)庫提出操作要求,把得到的結(jié)果返回給RecordSet對象。Command數(shù)據(jù)對象Command對象又稱為命令對象,可31Command對象的屬性和方法
屬性說明用法ActiveConnection指定Command用的連接cmd.ActiveConnection=connCommandText指定數(shù)據(jù)庫查詢信息cmd.ActiveConnection=表名或SQLCommandType數(shù)據(jù)查詢的類型cmd.CommandType=1,2,4CommandTimeout執(zhí)行SQL語句的最長時間默認為30秒Prepared是否預編譯,可以加快速度cmd.Parpared=True/FalseCommand對象的屬性和方法屬性說明用法ActiveCo32Command對象提供的方法
方法說明用法Execute()執(zhí)行SQL語句、表名或者存儲過程cmd.Execute()CreateParameter()創(chuàng)建Command對象的參數(shù)cmd.CreateParameter()Command對象提供的方法方法說明用法Execute()33格式三格式三:數(shù)據(jù)庫調(diào)用的基本格式格式說明:利用Command對象的Execute方法建立RecordSet對象
'第一步:建立Connection對象setconn=Server.CreateObject("ADODB.Connection")'第二步:使用Connection對象的Open方法建立數(shù)據(jù)庫連接conn.Open("driver={MicrosoftAccessDriver(*.mdb)};dbq="+Server.MapPath("Access數(shù)據(jù)庫"))'第三步:建立Command對象cmd=Server.CreateObject("ADODB.Command")cmd.ActiveConnection=conncmd.CommandText=sql'第四步:使用Command對象的Execute方法執(zhí)行SQL語句'如果執(zhí)行查詢語句rs=cmd.Execute()'如果執(zhí)行數(shù)據(jù)操縱語句cmd.Execute()格式三格式三:數(shù)據(jù)庫調(diào)用的基本格式34使用Command對象使用Command對象來執(zhí)行SQL語句,如程序6-09.asp所示。
使用Command對象使用Command對象來執(zhí)行SQL語35例6-2分頁列表的刪除和修改
本案例實現(xiàn)的功能是:為案例6-1的分頁列表添加修改數(shù)據(jù)和刪除數(shù)據(jù)的功能。首先為列表添加兩列:修改和刪除。顯示的主頁面如圖6-16所示。例6-2分頁列表的刪除和修改本案例實現(xiàn)的功能是:為案例636案例6-3分頁版本的留言簿這里再對留言簿作一次升級,在案例5-2的基礎上加入分頁功能。只要更改display.asp文件就可以。案例6-3分頁版本的留言簿這里再對留言簿作一次升級,在案例37小結(jié)本章重點理解訪問數(shù)據(jù)庫的三大基本格式及各自的特點。掌握Connection,RecordSet和Command對象的使用方法。熟練掌握利用格式二實現(xiàn)數(shù)據(jù)庫的分頁顯示和利用SQL語句操作數(shù)據(jù)庫的方法。小結(jié)本章重點理解訪問數(shù)據(jù)庫的三大基本格式及各自的特點。掌握C38本章習題一、選擇題1.可以使用ADO來訪問的數(shù)據(jù)庫是___________。A)MicrosoftAccessB)MicrosoftSQLServerC)OracleD)以上都可以2.命令對象(Command):用來執(zhí)行___________。A)SQL語句
B)SQLServer的存儲過程C)連接數(shù)據(jù)庫
D)返回記錄集3.語句rs.Fields.Count
返回的值是___________。A)記錄集的行數(shù)
B)記錄集的列數(shù)C)記錄集的行數(shù)+1D)記錄集的列數(shù)-14.使用BeginTrans()___________,利用CommitTrans()___________,如果有錯誤發(fā)生,利用RollbackTrans()來___________。A)提交一個事務
B)總結(jié)事務C)開始一個事務
D)取消事務5.可以利用Errors集合的___________來判斷是否有錯誤發(fā)生A)Number屬性
B)Description屬性C)Count屬性
D)Source屬性本章習題一、選擇題39二、填空題1.當執(zhí)行事務的時候,如果沒有錯誤發(fā)生,則conn.Errors.Cout將為___________。2.創(chuàng)建記錄集對象的一個實例,可以使用___________,這種方法創(chuàng)建的記錄集指針只能向下,而不能向上移動,即不能執(zhí)行MoveFirst()和MovePrevious()指令。3.判斷記錄集合是否到表的最后,
利用語句___________。二、填空題1.當執(zhí)行事務的時候,如果沒有錯誤發(fā)生,則con40三、簡答題與程序設計題1.簡述ADO的功能及常用的三大對象的用途。2.訪問數(shù)據(jù)庫格式一有什么特點?可以執(zhí)行哪些SQL語句?3.如何實現(xiàn)模糊查詢?4.如何用變量替換SQL語句的值?5.格式二的數(shù)據(jù)打開方式和鎖定方式有幾種?各有什么含義?6.比較訪問數(shù)據(jù)庫的三個基本格式的異同。三、簡答題與程序設計題41演講完畢,謝謝觀看!演講完畢,謝謝觀看!42第6章
ADO數(shù)據(jù)訪問接口6第6章ADO數(shù)據(jù)訪問接口643內(nèi)容提要本章介紹ADO的基本概念,以及如何在ASP程序中使用ADO的對象。介紹ADO的對象Connection、RecordSet和Command的使用。介紹SQL語句的基本概念及如何利用SQL語句操作數(shù)據(jù)庫。并介紹訪問數(shù)據(jù)庫的三個基本格式。內(nèi)容提要本章介紹ADO的基本概念,以及如何在ASP程序中使用44ADO數(shù)據(jù)訪問接口概述
ADO常用的四種對象及其功能如下。(1)
連接對象(Connection):用來連接數(shù)據(jù)庫。(2)
記錄集對象(RecordSet):用來保存查詢語句返回的結(jié)果。(3)
命令對象(Command):用來執(zhí)行SQL(StructuredQueryLanguage)語句或者SQLServer的存儲過程。(4)
參數(shù)對象(Parameter):用來為存儲過程或查詢提供參數(shù)。下面介紹常用的連接對象(Connection)、記錄集對象(RecordSet)、命令對象(Command)。ADO數(shù)據(jù)訪問接口概述ADO常用的四種對象及其功能如下。45Connection數(shù)據(jù)對象
與數(shù)據(jù)庫的所有通信都通過一個打開的Connection對象進行。對一個數(shù)據(jù)庫進行數(shù)據(jù)的插入和讀取之前,必須先打開數(shù)據(jù)庫的連接數(shù)據(jù)庫表是由行和列組成的一個二維表,當使用ADO打開數(shù)據(jù)庫的時候,會有一個指針指向某一行記錄,默認的情況下該指針指向數(shù)據(jù)庫表的第一行。假定該指針叫“rs”,如果要訪問數(shù)據(jù)庫表的字段,可以用圖6-1所示的方法。Connection數(shù)據(jù)對象與數(shù)據(jù)庫的所有通信都通過一個打46關(guān)系型數(shù)據(jù)庫表與指針
其中:寫法rs(0)、rs(“學號”)、rs.Fields(0)和rs.Fields(“學號”)是相同的,寫法rs(3)、rs(“語文”)、rs.Fields(3)和rs.Fields(“語文”)是相同的,其余類推。根據(jù)上表和注釋:rs(4).Name等價于rs.Fields(4).Name等價于"數(shù)學"rs(1).Name等價于rs.Fields(1).Name等價于"性別"假設當前的指針指向第三行記錄,那么rs(2).Value等價于rs("姓名")等價于rs(2)等價于"小張"rs(4).Value等價于rs(4)等價于rs("數(shù)學")等價于60關(guān)系型數(shù)據(jù)庫表與指針其中:寫法rs(0)、rs(“學號”)47打開和關(guān)閉數(shù)據(jù)庫連接
要建立與一個數(shù)據(jù)庫的連接,首先創(chuàng)建Connection對象的一個實例,然后調(diào)用Connection對象的Open方法打開一個連接通過程序6-01.asp輸出數(shù)據(jù)庫的表頭。
打開和關(guān)閉數(shù)據(jù)庫連接要建立與一個數(shù)據(jù)庫的連接,首先創(chuàng)建Co48數(shù)據(jù)庫調(diào)用的基本格式格式一:數(shù)據(jù)庫調(diào)用的基本格式格式說明:利用Execute方法執(zhí)行SQL語句
'第一步:建立Connection對象
setconn=Server.CreateObject("ADODB.Connection")'第二步:使用Connection對象的Open方法建立數(shù)據(jù)庫連接conn.Open("driver={MicrosoftAccessDriver(*.mdb)};dbq="&_ Server.MapPath("person.mdb"))'第三步:使用Connection對象的Execute方法執(zhí)行SQL語句'如果執(zhí)行查詢語句setrs=conn.Execute("數(shù)據(jù)查詢語句")'如果執(zhí)行數(shù)據(jù)操縱語句conn.Execute("數(shù)據(jù)操縱語句")數(shù)據(jù)庫調(diào)用的基本格式格式一:數(shù)據(jù)庫調(diào)用的基本格式49格式一的特點格式一的特點是:RecordSet對象的實例rs是利用Connection對象的Execute方法建立的,建立的rs對象的指針只能向后,不能向前移動。第一步建立了Connection對象的一個實例,第二步利用Open方法和用Access數(shù)據(jù)驅(qū)動程序打開服務器上的某個Access數(shù)據(jù)庫,第三步執(zhí)行SQL語句。
格式一的特點格式一的特點是:RecordSet對象的實例rs50Connection對象
參數(shù)說明用法DsnODBC數(shù)據(jù)源的名稱Dsn="ODBC名稱"User數(shù)據(jù)庫登錄的用戶名User="DatabaseUser"Password數(shù)據(jù)庫登錄的密碼Password="UserPassword"Driver數(shù)據(jù)庫驅(qū)動程序的類型Access用Access的驅(qū)動,其他數(shù)據(jù)數(shù)據(jù)庫用其他驅(qū)動。Dbq數(shù)據(jù)庫的物理路徑Dbq="C:\accdb.mdb"Provider數(shù)據(jù)提供者Provider="Microsoft.Jet.OLEDB.4.0"Connection對象參數(shù)說明用法DsnODBC數(shù)據(jù)源的51其他類型的數(shù)據(jù)庫連接
連接的數(shù)據(jù)庫說明OracleDriver={MicrosoftODBCforOracle};Server=服務器地址;User=;Password=SQLServerServer=服務器地址;Database=數(shù)據(jù)庫名;uid=用戶名;pwd=''ExcelDriver={MicrosoftExcelDriver(*.xls)};Dbq=Excel文件的物理路徑文本文件Driver={MicrosoftTextDriver(*.txt;*.csv)};DefaultDir=文件的物理路徑其他類型的數(shù)據(jù)庫連接連接的數(shù)據(jù)庫說明OracleDrive52Connection對象的方法和屬性
方法名稱說明用法Open()建立連接Conn.Open("數(shù)據(jù)庫連接串")Close()關(guān)閉與數(shù)據(jù)庫連接Conn.Close()Execute()執(zhí)行數(shù)據(jù)庫查詢Conn.Execute(SQL語句或者表名)BeginTrans()開始事務處理Conn.BeginTrans()CommitTrans()提交事務處理Conn.CommitTrans()RollbackTrans()取消事務處理Conn.RollbackTRans()Connection對象的方法和屬性方法名稱說明用法Ope53Connection對象的屬性
屬性名稱說明用法CommandTimeoutExecute方法最長執(zhí)行時間默認值為30秒鐘,可以修改ConnectionTimeoutOpen方法最長執(zhí)行時間默認值為15秒,可以修改ConnectionString數(shù)據(jù)庫的連接串可以將連接串賦值給該屬性Mode用來設置操作權(quán)限1為只讀、2為只寫、3為可讀可寫Version獲取ADO的版本信息Conn.VersionConnection對象的屬性屬性名稱說明用法Comman54向瀏覽器輸出數(shù)據(jù)庫內(nèi)容
向瀏覽器輸出了表頭后,可以利用RecordSet記錄集返回數(shù)據(jù)庫表中的數(shù)據(jù),如程序6-02.asp所示。
向瀏覽器輸出數(shù)據(jù)庫內(nèi)容向瀏覽器輸出了表頭后,可以利用Rec55
輸出表中所有數(shù)據(jù)
用一個循環(huán)輸出數(shù)據(jù)庫中所有的數(shù)據(jù)。當數(shù)據(jù)庫打開時,rs對象定位在數(shù)據(jù)庫表的第一條記錄上,輸出第一條記錄的內(nèi)容;要想輸出第二條記錄,必須執(zhí)行rs.MoveNext()指令,讓它移動到下一條記錄。rs.BOF(BeginOfFile,文件開頭)和rs.EOF(EndOfFile,文件結(jié)尾)這兩條指令判斷記錄指針是否移動最前面和最后面,BOF的位置是在第一條記錄之前,EOF是在最后一條記錄之后。如果rs指針在最后一條記錄上,再執(zhí)行一次MoveNext()時則rs.EOF為真。如果rs.EOF或者rs.BOF為真,這時讀取數(shù)據(jù)會出錯。
輸出表中所有數(shù)據(jù)用一個循環(huán)輸出數(shù)據(jù)庫中所有的數(shù)據(jù)。當數(shù)據(jù)56數(shù)據(jù)庫表的結(jié)構(gòu)
數(shù)據(jù)庫表的結(jié)構(gòu)57使用事務
事務在實際編程中使用比較頻繁。事務典型的特征是:事務中一般包含幾個事件,只有幾個事件同時執(zhí)行成功,整個事務才被執(zhí)行,否則事務中的事件將不被執(zhí)行。比如:在ATM機上取200元,需要執(zhí)行兩個操作,1、從銀行賬戶上減去200;2、ATM機將錢返給用戶。這兩個事件將構(gòu)成事務。在實際編程中,需要同時成功,同時失敗。使用方法如程序6-05.asp所示。
使用事務事務在實際編程中使用比較頻繁。事務典型的特征是:事58Connection對象中的Errors集合
Error對象是Connection對象的子對象。數(shù)據(jù)庫程序運行的時候,一個錯誤就是一個Error對象,所有的Error對象就組成了Errors集合,又稱為錯誤集合。可以利用Errors集合的Count屬性來判斷是否有錯誤發(fā)生,還可以提取出錯誤的描述,最后根據(jù)錯誤的類型,給出相應的解決措施。Errors對象提供一些屬性來得到錯誤信息
Connection對象中的Errors集合Error對象59Error對象的屬性
參數(shù)說明用法Number錯誤編號Err.NumberDescription錯誤描述Err.DescriptionSource發(fā)生錯誤的原因Err.SourceHelpContext錯誤的提示文字Err.HelpContextHelpFile錯誤的提示文件Err.HelpFileNativeError數(shù)據(jù)庫服務器產(chǎn)生的錯誤Err.NativeErrorError對象的屬性參數(shù)說明用法Number錯誤編號Err60RecordSet數(shù)據(jù)對象
記錄集可以用來代替表中的記錄。一個記錄集包含一條或多條記錄(行),每條記錄包括一個或多個域(字段)。在任何時刻,只有一條記錄是當前記錄。創(chuàng)建記錄集對象的一個實例,可以使用Connection對象的Execute()方法,用Execute()創(chuàng)建的記錄集指針只能向下,而不能向上移動,即不能執(zhí)行MoveFirst()和MovePrevious()指令。
RecordSet數(shù)據(jù)對象記錄集可以用來代替表中的記錄。一61RecordSet對象的屬性及方法
利用RecordSet對象的屬性和方法可以完全操作一個數(shù)據(jù)庫,理論上只要SQL語句可以完成的操作利用RecordSet對象都可以實現(xiàn)。RecordSet對象的屬性和方法很多,常用的方法如表6-6所示。
RecordSet對象的屬性及方法利用RecordSet對62RecordSet對象的方法
方法說明用法Open()打開記錄集rs.Open()Close()關(guān)閉記錄集rs.Close()Requery重新打開記錄集rs.Requery()Move()當前記錄前后移動條數(shù)rs.Move(4)向后面移動4行MoveFirst()移動到第一條記錄rs.MoveFirst()MoveNext()移動到下一條記錄rs.MoveNext()MovePrevious()移動到記錄集中的上一條記錄rs.MovePrevious()MoveLast()移動到記錄集的最后一條記錄rs.MoveLast()AddNew()向記錄集中添加一條新記錄rs.AddNew()Delete()從記錄集中刪除當前記錄rs.Delete()Update()保存對當前記錄所做的修改rs.Update()UpdateBatch()保存對一個或多個記錄的修改rs.UpdateBatch()CancelBatch()取消一批更新rs.CancelBatch()RecordSet對象的方法方法說明用法Open()打開記63RecordSet對象的屬性
屬性說明用法ActiveConnection當前記錄集用的數(shù)據(jù)連接rs.ActiveConnection=connRecordCounts記錄集的總數(shù)rs.RecordCountsBOF記錄集的開頭rs.BOFEOF記錄集的結(jié)尾rs.EOFPageCount返回記錄集中的邏輯頁數(shù)rs.PageCountPageSize返回邏輯頁中的記錄個數(shù)rs.PageSize默認值是10AbsolutePage指定當前的頁rs.AbsolutePageAbsolutePosition指定當前的記錄rs.AbsolutePositionRecordSet對象的屬性屬性說明用法ActiveCon64使用RecordSet對象打開數(shù)據(jù)庫
格式二:數(shù)據(jù)庫調(diào)用的基本格式格式說明:利用RecordSet對象打開數(shù)據(jù)庫表
'第一步:建立Connection對象setconn=Server.CreateObject("ADODB.Connection")'第二步:使用Connection對象的Open方法建立數(shù)據(jù)庫鏈接conn.Open("driver={MicrosoftAccessDriver(*.mdb)};dbq="&_Server.MapPath("Access數(shù)據(jù)庫"))'第三步:建立RecordSet對象setrs=Server.CreateObject("ADODB.Recordset")'第四步:利用RecordSet對象的Open方法打開數(shù)據(jù)庫rs.Open"SQL語句",conn,打開方式,鎖定類型使用RecordSet對象打開數(shù)據(jù)庫格式二:數(shù)據(jù)庫調(diào)用的基65打開類型的四個參數(shù):
(1)adOpenFowardOnly:對應的數(shù)字是0(默認值),記錄集只能向前移動。這些參數(shù)對應的數(shù)字,都保存在系統(tǒng)文件Adovbs.inc中。(2)adOpenKeyset:對應的數(shù)字是1,記錄集可以向前或向后移動。如果另一個用戶刪除或改變一條記錄,記錄集中將反映這個變化。但是,如果另一個用戶添加一條新記錄,新記錄不會出現(xiàn)在記錄集中。(3)adOpenDynamic:對應的數(shù)字是2,使用動態(tài)游標,可以在記錄集中向前或向后移動。其他用戶造成的記錄的任何變化都將在記錄集中有所反映。(4)adOpenStatic。對應的數(shù)字是3,使用靜態(tài)游標,可以在記錄集中向前或向后移動。但是,靜態(tài)游標不會對其他用戶造成的記錄變化有所反映。打開類型的四個參數(shù):(1)adOpenFowardOnly66鎖定類型的參數(shù)如下
(1)adLockReadOnly:只讀鎖定,對應的數(shù)字是1(默認值),不能修改記錄集中的記錄。(2)adLockPessimistic:悲觀鎖定,對應的數(shù)字是2,指定在編輯一個記錄時,立即鎖定它。進入鎖定
rs("數(shù)學")=rs("數(shù)學")+100
rs("語文")=rs("語文")+100
rs.Update() 解除鎖定鎖定類型的參數(shù)如下(1)adLockReadOnly:只讀67鎖定類型的參數(shù)
(3)adLockOptimistic:樂觀鎖定,對應的數(shù)字是3,指定只有調(diào)用記錄集的Update方法時,才鎖定記錄。
rs("數(shù)學")=rs("數(shù)學")+100
rs("語文")=rs("語文")+100進入鎖定
rs.Update() 解除鎖定(4)adLockBatchOptimistic:批次樂觀鎖定,對應的數(shù)字是4,指定記錄只能成批地更新。
ForI=1to10 rs("語文")=rs("語文")+100
rs("數(shù)學")=rs("數(shù)學")+100
rs.MoveNext() Next進入鎖定
rs.UpdateBatch() 解除鎖定鎖定類型的參數(shù)(3)adLockOptimistic:樂觀68RecordSet當數(shù)據(jù)庫第一次打開時,RecordSet指針定位在第一條記錄上,可以利用AbsolutePosition直接定位到某條記錄上,基本的語法是:AbsolutePosition=N,如程序6-07.asp文件所示。
RecordSet當數(shù)據(jù)庫第一次打開時,RecordSet指69AbsolutePage還有一個屬性是AbsolutePage,當調(diào)用AbsolutePage時,系統(tǒng)將對數(shù)據(jù)記錄進行分頁,默認每頁為10條記錄,AbsolutePage為幾,記錄指針就自動定位到第幾頁的第一條記錄上。比如說,AbsolutePage=3,則記錄指針就自動定位到第21條記錄上去了,此時AbsolutePosition=21。計算公式為:AbsolutePosition=(Absolute1)*PageSize,PageSize默認是10,也可以設置為其他的值。使用方法如程序6-08.asp所示
AbsolutePage還有一個屬性是AbsolutePag70實現(xiàn)數(shù)據(jù)庫的分頁顯示
數(shù)據(jù)庫中可能有成千上萬條記錄,如果一次都顯示出來的話消耗的時間太多。下面通過一個案例分成六個版本實現(xiàn)數(shù)據(jù)庫的分頁顯示。
實現(xiàn)數(shù)據(jù)庫的分頁顯示數(shù)據(jù)庫中可能有成千上萬條記錄,如果一次71案例6-1分頁顯示首先利用格式二將數(shù)據(jù)庫表中某頁的所有記錄輸出,如程序pageV1.asp所示。在程序中加上翻頁的超級鏈接就可以實現(xiàn)翻頁,如程序pageV2.asp所示??梢岳肞ageCount屬性得到總頁數(shù),修正這些可能出現(xiàn)的錯誤,得到版本三。如程序pageV3.asp所示。加入超級鏈接的版本四如程序pageV4.asp所示,將姓名一列加上超級鏈接。
偶數(shù)行和奇數(shù)行可顯示不同的背景顏色。版本五將實現(xiàn)這些功能,如程序pageV5.asp所示。
案例6-1分頁顯示首先利用格式二將數(shù)據(jù)庫表中某頁的所有記錄72Command數(shù)據(jù)對象
Command對象又稱為命令對象,可以執(zhí)行SQL語句和執(zhí)行SQLServer的存儲過程。通過傳遞SQL指令對數(shù)據(jù)庫提出操作要求,把得到的結(jié)果返回給RecordSet對象。Command數(shù)據(jù)對象Command對象又稱為命令對象,可73Command對象的屬性和方法
屬性說明用法ActiveConnection指定Command用的連接cmd.ActiveConnection=connCommandText指定數(shù)據(jù)庫查詢信息cmd.ActiveConnection=表名或SQLCommandType數(shù)據(jù)查詢的類型cmd.CommandType=1,2,4CommandTimeout執(zhí)行SQL語句的最長時間默認為30秒Prepared是否預編譯,可以加快速度cmd.Parpared=True/FalseCommand對象的屬性和方法屬性說明用法ActiveCo74Command對象提供的方法
方法說明用法Execute()執(zhí)行SQL語句、表名或者存儲過程cmd.Execute()CreateParameter()創(chuàng)建Command對象的參數(shù)cmd.CreateParameter()Command對象提供的方法方法說明用法Execute()75格式三格式三:數(shù)據(jù)庫調(diào)用的基本格式格式說明:利用Command對象的Execute方法建立RecordSet對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 攝影工作室裝修免租合同
- 二零二五年度辦公室文員工作責任與獎勵合同
- 科技園區(qū)房產(chǎn)居間合同模板
- 餐飲連鎖居間合同
- 車輛長期租賃合同協(xié)議
- 代簽合同委托書
- 企業(yè)知識產(chǎn)權(quán)保護與管理策略研究項目名稱
- 項目策劃與執(zhí)行流程指南
- 農(nóng)業(yè)災害防治技術(shù)研究與應用方案
- 終止合同協(xié)議書
- 元宇宙視域下非遺保護與傳播途徑探究
- 2025年買賣個人房屋合同(4篇)
- 2025代運營合同范本
- 武漢2025年湖北武漢理工大學管理人員招聘筆試歷年參考題庫附帶答案詳解
- 家庭燃氣和煤氣防火安全
- 第十一章《功和機械能》達標測試卷(含答案)2024-2025學年度人教版物理八年級下冊
- 辦公用品價格清單
- DB3713T 340-2024 實景三維數(shù)據(jù)接口及服務發(fā)布技術(shù)規(guī)范
- 八年級生物開學摸底考(長沙專用)(考試版)
- 傳染病監(jiān)測預警與指揮信息平臺升級建設方案
- (工作規(guī)范)公路預防性養(yǎng)護工作手冊
評論
0/150
提交評論