《ASP存取數(shù)據(jù)庫》_第1頁
《ASP存取數(shù)據(jù)庫》_第2頁
《ASP存取數(shù)據(jù)庫》_第3頁
《ASP存取數(shù)據(jù)庫》_第4頁
《ASP存取數(shù)據(jù)庫》_第5頁
已閱讀5頁,還剩120頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、ASPASP存取數(shù)據(jù)庫存取數(shù)據(jù)庫 某網(wǎng)站的導(dǎo)航內(nèi)容需要根據(jù)用戶的需求進行刪除、增加、修改。現(xiàn)在由你擔(dān)任程序員,你將如何來實現(xiàn)網(wǎng)絡(luò)導(dǎo)航部分的實現(xiàn)和維護? 方案一:方案一:,維護功能由程序員修改,維護功能由程序員修改htmlhtml代碼來實現(xiàn)。代碼來實現(xiàn)。 方案一方案一:,維護工作由管理員在客戶端界面即可簡單方便的完成,維護工作由管理員在客戶端界面即可簡單方便的完成,不需要對源程序進行修改。不需要對源程序進行修改。 ASPASP存取數(shù)據(jù)庫技術(shù)存取數(shù)據(jù)庫技術(shù) 數(shù)據(jù)庫存取組件(Database Access Component)是使用ADO(ActiveX Data Object)技術(shù)來存取符合數(shù)據(jù)源

2、標準的數(shù)據(jù)庫或者具有表格狀的數(shù)據(jù)形式的一種ASP內(nèi)置組件。 ADOconnectioncommandrecordsetASPASP存取數(shù)據(jù)庫存取數(shù)據(jù)庫Connection對象Command對象Recordset對象數(shù)據(jù)庫數(shù)據(jù)庫網(wǎng)頁ADO輕松的實現(xiàn)實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的查詢、添加、刪除、修改等功能,方便數(shù)據(jù)庫的維護或網(wǎng)站的維護。 ASPASP存取數(shù)據(jù)庫存取數(shù)據(jù)庫1.Connection對象對象又稱連接對象,主要用來建立與數(shù)據(jù)庫的連接。只有先與數(shù)據(jù)庫建立連接關(guān)系,才能實現(xiàn)對數(shù)據(jù)庫的操作。 2.Command對象對象又稱命令對象,是數(shù)據(jù)庫執(zhí)行命令的對象,可以執(zhí)行數(shù)據(jù)庫查詢、修改、增添、刪除等操作。 3.R

3、ecordset對象對象又稱記錄集對象。當connection對象或Command對象執(zhí)行命令后,就會得到一個由滿足條件的記錄所組成的虛擬記錄集。網(wǎng)絡(luò)導(dǎo)航實例探討網(wǎng)絡(luò)導(dǎo)航實例探討 “網(wǎng)絡(luò)導(dǎo)航” 數(shù)據(jù)庫 wwwlink 中建立一個link數(shù)據(jù)表來存放導(dǎo)航信息。 Link_idnameURLintroSubmit_date1新浪 門戶網(wǎng)站 2004-10-20 2北大 學(xué)習(xí)的圣地 2004-10-21 3網(wǎng)易 社區(qū)網(wǎng)站 2004-10-23 4搜狐 搜索引擎 2004-10-25 如何把數(shù)據(jù)庫中的導(dǎo)航信息顯示在網(wǎng)頁上,如何從網(wǎng)絡(luò)平臺上刪除、修改、添加網(wǎng)絡(luò)導(dǎo)航信息?網(wǎng)頁訪問數(shù)據(jù)庫的基本思路網(wǎng)頁訪問數(shù)

4、據(jù)庫的基本思路q 建立數(shù)據(jù)庫連接對象(connection對象),并連接數(shù)據(jù)庫q 設(shè)置數(shù)據(jù)表操作的SQL命令,選擇connection對象或command對象來執(zhí)行q 確認數(shù)據(jù)表操作結(jié)果是否需要顯示,如果要則建立recordset對象來指向執(zhí)行結(jié)果,并讀取相應(yīng)的記錄ConnectionConnection對象的功能對象的功能q連接數(shù)據(jù)庫(最主要的功能)q存取數(shù)據(jù)表中數(shù)據(jù)q事務(wù)處理ConnectionConnection對象常用屬性和方法對象常用屬性和方法屬性說明Mode設(shè)置數(shù)據(jù)庫連接的權(quán)限,如只讀或只寫Connectiontimeout決定等待連接到數(shù)據(jù)庫的時間,默認15秒Connection

5、String連接數(shù)據(jù)庫所用到的信息,為一個字符串Commandtimeout等待一條命令處理的時間,默認30秒方法說明open打開與一個數(shù)據(jù)庫的連接close關(guān)閉與一個數(shù)據(jù)庫的連接execute執(zhí)行指定的SQL語句、存儲過程等BeginTrans生成一個新的事務(wù)CommitTrans執(zhí)行事務(wù)RollBackTrans取消當前事務(wù)所做的修改并結(jié)束該事務(wù)利用利用ConnectionConnection對象連接數(shù)據(jù)庫對象連接數(shù)據(jù)庫要把數(shù)據(jù)表中的信息顯示在web頁面,首先要建立數(shù)據(jù)庫連接對象,并打開相應(yīng)的數(shù)據(jù)庫(wwwlink.mdb)。利用利用ConnectionConnection對象連接數(shù)據(jù)庫對

6、象連接數(shù)據(jù)庫數(shù)據(jù)庫連接對象的創(chuàng)建:利用利用ConnectionConnection對象連接數(shù)據(jù)庫對象連接數(shù)據(jù)庫數(shù)據(jù)庫的連接:數(shù)據(jù)庫的連接有兩種方法:非數(shù)據(jù)源的連接和數(shù)據(jù)源的連接利用利用ConnectionConnection對象連接數(shù)據(jù)庫對象連接數(shù)據(jù)庫(1)非數(shù)據(jù)源的連接方法之一 利用利用ConnectionConnection對象連接數(shù)據(jù)庫對象連接數(shù)據(jù)庫打開數(shù)據(jù)庫時需要兩個參數(shù),一個是:dbq=數(shù)據(jù)庫的物理路徑一個是:Driver=數(shù)據(jù)庫驅(qū)動程序。兩個參數(shù)之間用“;”隔開。Db.open Dbq= & Server.Mappath(address.mdb) & ;Driver

7、=Microsoft Access Driver (*.mdb)利用利用ConnectionConnection對象連接數(shù)據(jù)庫對象連接數(shù)據(jù)庫(1)后跟的是一個字符串;(2)數(shù)據(jù)庫的地址是物理地址,可以用方法把相對地址轉(zhuǎn)換為物理地址,也可以直接寫,不過直接寫數(shù)據(jù)庫的物理路徑,在程序移植時需要修改物理路徑,或放在指定的位置。(3)數(shù)據(jù)庫類型:由于我們用的是Access數(shù)據(jù)庫,所以注明“Driver=Microsoft Access Driver (*.mdb)” ,且注意在Driver和(*.mdb)之間的空格。(4)數(shù)據(jù)庫地址信息和類型信息之間用“;”隔開利用利用ConnectionConnec

8、tion對象連接數(shù)據(jù)庫對象連接數(shù)據(jù)庫(2)(2)非數(shù)據(jù)源的連接方法之二(基于基于OLE DB的連接方法的連接方法 )該連接方法中也有兩個參數(shù),一個是:Provider=數(shù)據(jù)提供者,另一個是:Data source=數(shù)據(jù)庫的物理路徑。兩個參數(shù)之間用“;”隔開。 利用利用ConnectionConnection對象連接數(shù)據(jù)庫對象連接數(shù)據(jù)庫(3)利用數(shù)據(jù)源的連接方法(基于ODBC的連接方法 )假設(shè)我們設(shè)置的數(shù)據(jù)源名字為mylink,則建立連接的方法是: 利用利用ConnectionConnection對象連接數(shù)據(jù)庫對象連接數(shù)據(jù)庫 通過上述的介紹,請比較兩種數(shù)據(jù)庫連接方法各有什么優(yōu)勢? 非數(shù)據(jù)源連接方

9、法:非數(shù)據(jù)源連接方法:書寫比較復(fù)雜,但移植比較簡單,不需要在服務(wù)器上重新設(shè)置數(shù)據(jù)源。 數(shù)據(jù)源連接方法:數(shù)據(jù)源連接方法:書寫簡單,但移植到其他服務(wù)器,則需要重新設(shè)置數(shù)據(jù)源。 利用利用ConnectionConnection對象連接數(shù)據(jù)庫對象連接數(shù)據(jù)庫 在用方法連接數(shù)據(jù)庫時的數(shù)據(jù)庫連接信息還可以用connection對象的connectionstring屬性表示。 利用利用ConnectionConnection對象關(guān)閉數(shù)據(jù)庫連接對象關(guān)閉數(shù)據(jù)庫連接connection對象.Close 切斷與指定數(shù)據(jù)庫的連接。 利用利用ConnectionConnection對象執(zhí)行數(shù)據(jù)存取對象執(zhí)行數(shù)據(jù)存取set

10、recordSet對象=connection對象.execute (SQL語句字符串)或 connection對象.execute(SQL語句字符串)數(shù)據(jù)庫記錄數(shù)據(jù)庫記錄查詢查詢數(shù)據(jù)庫記錄的刪除、修改、增添數(shù)據(jù)庫記錄的刪除、修改、增添 連接上數(shù)據(jù)庫后,就可以應(yīng)用connection對象的execute方法對數(shù)據(jù)庫中的數(shù)據(jù)執(zhí)行操作。 利用利用ConnectionConnection對象執(zhí)行查詢對象執(zhí)行查詢通過connection對象db的Execute方法執(zhí)行查詢SQL語句,得到一個虛擬的記錄集,可建立RecordSet對象作為記錄集的指針。 123rsrs.bof=truersrs.eof=t

11、ruersrs.moveNext, rs.moveProvious, rs.movefirst, rs.movelast, rs.move n。 利用利用ConnectionConnection對象執(zhí)行查詢對象執(zhí)行查詢假設(shè)此時記錄集指針 rs 指向第一條記錄,123rs該記錄的每個字段值用 rs(“字段名”) 獲取。 rs(rs(“字段名字段名”) )就是標識對應(yīng)記錄的某個字段的值。如:rs(rs(“l(fā)ink_idlink_id”) )可以獲取指定記錄的編號rs(rs(“namename”) )可以獲取指定記錄的網(wǎng)站名稱rs(rs(“URLURL”) )可以獲取指定記錄的網(wǎng)站地址利用利用Con

12、nectionConnection對象執(zhí)行查詢對象執(zhí)行查詢我們剛才讀取了 rs 所指向的一條記錄的數(shù)據(jù),但是一般情況記錄集中有多條記錄,如何能把每條記錄都讀取出來呢? 在讀完一條記錄后,用 rs 的 moveNext 方法,使 rs 移到下一條記錄,再按照剛才所說的方法來讀取每項數(shù)據(jù)。直到我們的 rs 移到了記錄集的結(jié)尾,也就是true時。 利用利用ConnectionConnection對象執(zhí)行刪除對象執(zhí)行刪除利用利用ConnectionConnection對象執(zhí)行刪除對象執(zhí)行刪除(1 1)由于我們刪除記錄時不生成記錄集,所以沒有必要設(shè)置)由于我們刪除記錄時不生成記錄集,所以沒有必要設(shè)置記錄

13、集指針記錄集指針rsrs。 (2 2)SQLSQL語句中用到了一個傳遞參數(shù)。語句中用到了一個傳遞參數(shù)。 (3 3)在)在SQLSQL語句中,如果連接的參數(shù)是數(shù)值型,則不要在參數(shù)語句中,如果連接的參數(shù)是數(shù)值型,則不要在參數(shù)兩邊加單引號,如果是字符則要加單引號,如果是日期型則加兩邊加單引號,如果是字符則要加單引號,如果是日期型則加# #。 sqlstr1=sqlstr1=”select select * * from link where link_id=5 from link where link_id=5”sqlstr1=sqlstr1=”select select * * from link

14、 where name= from link where name=搜狐搜狐”sqlstr1=sqlstr1=”select select * * from link where link_id= from link where link_id=” & linked & linkedsqlstr1=sqlstr1=”select select * * from link where name= from link where name=” & netName & & netName & ” 利用利用ConnectionConnection對象執(zhí)行

15、添加對象執(zhí)行添加 增添記錄的SQL語句中,value內(nèi)的參數(shù)是從哪里獲取的?在增加新數(shù)據(jù)記錄時,先得填寫表單,然后在增加記錄頁面獲取這些信息,作為SQL語句中insert里value的參數(shù)。利用利用ConnectionConnection對象執(zhí)行添加對象執(zhí)行添加利用利用ConnectionConnection對象執(zhí)行數(shù)據(jù)存取對象執(zhí)行數(shù)據(jù)存取在查詢、刪除、修改等操作中,有時希望知道connection對象.execute 方法影響了多少條記錄,怎么辦?connection對象.execute SQL語句字符串,number 返回此次操作影響的記錄條數(shù) 數(shù)據(jù)庫的操作權(quán)限數(shù)據(jù)庫的操作權(quán)限 在上述的網(wǎng)

16、絡(luò)導(dǎo)航例子中,我們對數(shù)據(jù)庫進行了查詢、增添、刪除、修改的操作。但是操作數(shù)據(jù)庫就要涉及到一個權(quán)限問題,比如只讀、只寫、讀寫。Connection對象的mode屬性是設(shè)置數(shù)據(jù)庫操作權(quán)限的屬性。Mode參數(shù)整數(shù)值說明AdModeUnknown0權(quán)限未定義AdModeRead1權(quán)限只讀AdModeWrite2權(quán)限只寫AdModeReadWrite3權(quán)限可讀可寫數(shù)據(jù)庫的操作權(quán)限數(shù)據(jù)庫的操作權(quán)限Mode屬性設(shè)置應(yīng)該在數(shù)據(jù)庫打開之前設(shè)置事務(wù)處理事務(wù)處理引入事務(wù)處理的原因引入事務(wù)處理的原因 在應(yīng)用數(shù)據(jù)庫存取組件處理數(shù)據(jù)時,為了避免數(shù)據(jù)庫連接錯誤或者數(shù)據(jù)庫執(zhí)行命令出錯而引起的一些問題,提出了“同生共死”的要求。

17、ConnectionConnection對象的事務(wù)處理方法對象的事務(wù)處理方法connection對象的事務(wù)處理方法 connection對象.BeginTransconnection對象.CommitTransconnection對象.RollBackTrans。 源數(shù)據(jù)庫源數(shù)據(jù)庫源數(shù)據(jù)庫副本源數(shù)據(jù)庫副本生成生成ConnectionConnection對象的事務(wù)處理方法對象的事務(wù)處理方法4. connection對象的事務(wù)處理方法 connection對象.BeginTransconnection對象.CommitTransconnection對象.RollBackTrans。 源數(shù)據(jù)庫源數(shù)據(jù)

18、庫源數(shù)據(jù)庫副本源數(shù)據(jù)庫副本生成生成ConnectionConnection對象的事務(wù)處理方法對象的事務(wù)處理方法實例學(xué)習(xí)實例學(xué)習(xí)ASPASP執(zhí)行中的出錯對象執(zhí)行中的出錯對象 err err對象對象 Err 對象是一個全局范圍的VBScript對象,不必在您的代碼中創(chuàng)建它的實例,是VBScript程序在執(zhí)行中發(fā)生錯誤時自動創(chuàng)建的對象。 Err 對象的number屬性 :返回或設(shè)置數(shù)值指定錯誤.ASPASP執(zhí)行中的出錯對象執(zhí)行中的出錯對象 err err對象對象On Error Resume Next 6 產(chǎn)生溢出錯誤。MsgBox (Error # & CStr() & “: &a

19、mp; ) 清除錯誤。 由于ASP是解析執(zhí)行的,所以遇到問題時就會在發(fā)生錯誤的地方停下來,并呈現(xiàn)錯誤信息。On error resume next可以是asp程序忽略錯誤繼續(xù)往下執(zhí)行程序。errorsConnectionConnection對象的對象的erreorerreor子對象子對象Error對象對象Error對象對象Error對象對象Error對象對象Connection對象對象 表示db的錯誤數(shù)量db.errors.item(i) 標識其中一個錯誤 (0 = i 1)ConnectionConnection對象的對象的errorerror子對象子對象errors和error對象: AD

20、O ADO是一種允許用戶與數(shù)據(jù)存儲進行交互的組件,是一種數(shù)據(jù)庫訪問技術(shù)。它與我們的OLEDB和ODBC緊密相關(guān)。ADO調(diào)用先被送到OLEDB,然后再交由ODBC處理。ODBC根據(jù)所提供的參數(shù)(如數(shù)據(jù)庫驅(qū)動、數(shù)據(jù)庫名稱)進行數(shù)據(jù)訪問。 在中我們已經(jīng)指定了刪除的記錄,所以在SQL語句中必須指明條件。而這個條件該怎么確定呢?根據(jù)數(shù)據(jù)表的設(shè)計,每條記錄的link_id是唯一的,所以用link_id來確定是不會出現(xiàn)誤刪除的。所以要在刪除頁面和之間建立某種聯(lián)系,也就是把中要刪除的記錄的link_id值傳到刪除頁面。這種數(shù)據(jù)的傳送可以通過哪些方法實現(xiàn)呢?鏈接的網(wǎng)址中賦予了傳遞參數(shù)是rs(“l(fā)ink_id”)

21、 傳遞參數(shù)的設(shè)計傳遞參數(shù)的設(shè)計CommandCommand對象對象數(shù)據(jù)庫數(shù)據(jù)庫網(wǎng)頁ADOConnection對象Command對象Recordset對象CommandCommand對象對象 Command對象又稱命令對象,是數(shù)據(jù)庫執(zhí)行命令的對象,可以執(zhí)行數(shù)據(jù)庫查詢、修改、增添、刪除等操作。它介于Connection對象和Recordset對象之間,它通過已經(jīng)建立的Connection對象來傳遞SQL指令,對數(shù)據(jù)庫提出操作請求,把得到的結(jié)果返回給Recordset對象。 特特 點:點:Command對象在實際應(yīng)用中主要是用來進行參數(shù)查詢,Command對象的參數(shù)查詢可以提高查詢速度。 Comma

22、ndCommand對象對象v Command對象的創(chuàng)建 v Command對象的屬性和方法 v 利用Command對象進行的參數(shù)查詢 學(xué)習(xí)要點:學(xué)習(xí)要點:CommandCommand對象的應(yīng)用步驟對象的應(yīng)用步驟v 先創(chuàng)建Command對象v 指定Command對象的Connection對象v 設(shè)定Command對象的屬性,執(zhí)行Command對象的方法 CommandCommand對象的創(chuàng)建對象的創(chuàng)建(1 1)通過)通過ConnectionConnection對象建立對象建立CommandCommand對象對象 CommandCommand對象的創(chuàng)建對象的創(chuàng)建(1 1)通過)通過Connecti

23、onConnection對象建立對象建立CommandCommand對象對象 第一步:創(chuàng)建Connection對象第二步:創(chuàng)建Command對象第三步:通過Command對象的ActiveConnection屬性把Command對象與Connection對象關(guān)聯(lián)起來。 CommandCommand對象的創(chuàng)建對象的創(chuàng)建(2 2)不通過)不通過ConnectionConnection對象建立對象建立CommandCommand對象對象 這種方法沒有明確的建立Connection對象,而是隱含地建立一個Connection對象。CommandCommand對象的創(chuàng)建對象的創(chuàng)建隱含建立Connecti

24、on對象的情況下,我們還能使用Connection對象的屬性和方法嗎?(2 2)不通過)不通過ConnectionConnection對象建立對象建立CommandCommand對象對象 CommandCommand對象的屬性和方法對象的屬性和方法 屬性說明ActiveConnection指定關(guān)聯(lián)的Connection對象CommandText指定數(shù)據(jù)庫操作命令,可以是SQL語句、表名、存儲過程CommandType指定數(shù)據(jù)庫操作命令類型,是SQL語句、表名、存儲過程方法說明execute執(zhí)行數(shù)據(jù)庫操作命令CreateParameter創(chuàng)建一個parameter子對象CommandComman

25、d對象的屬性對象的屬性 ActiveConnectionActiveConnection ActiveConnection屬性用來指定與Command對象的關(guān)聯(lián)的Connection對象。 語語 法法 :Command對象.ActiveConnectionConnection對象 CommandCommand對象的屬性對象的屬性 CommandTextCommandText CommandText屬性用于指定數(shù)據(jù)庫操作命令。 語語 法法 :Command對象.CommandTextSQL語句字符串/表名/查詢名或存儲過程名 CommandCommand對象的屬性對象的屬性 Commandtyp

26、e Commandtype Commandtype屬性用來指定數(shù)據(jù)庫操作命令的類型,即是SQL語句、表名、查詢名或存儲過程名。語語 法法 :Command對象.CommandType類型值 類型值相應(yīng)數(shù)值說明adCmdUnknown-1CommandText類型無法確定,需程序自身去分析確定,減緩了查詢速度。是系統(tǒng)默認值adCmdText1SQL語句adCmdTable2表名adCmdStoreProc 4查詢名或存儲過程名CommandCommand對象的屬性對象的屬性CommandTimeOut Command對象Execute方法的最長執(zhí)行時間。 Prepared 該屬性指定數(shù)據(jù)查詢信息

27、是否先編譯、存儲。 CommandCommand對象的方法對象的方法 ExecuteExecuteExecute方法是根據(jù)數(shù)據(jù)查詢信息執(zhí)行數(shù)據(jù)庫操作,和Connection對象的Execute方法很相似的,幾乎能完成所有的功能。 語語 法法 :Set RecordSet對象Command對象. Execute 或者Command對象. Execute CommandCommand對象與對象與ConnectionConnection對象存取數(shù)據(jù)庫的比較對象存取數(shù)據(jù)庫的比較 Connection對象存取數(shù)據(jù)庫對象存取數(shù)據(jù)庫: Command對象存取數(shù)據(jù)庫對象存取數(shù)據(jù)庫: Command對象的方法

28、CreateParameter CreateParameter方法用來創(chuàng)建一個參數(shù)對象,即Parameter對象。 Parameters集合Command對象的parameters集合和parameter對象parameter對象對象parameter對象對象parameter對象對象parameter對象對象Command對象對象parameterparameter對象的創(chuàng)建對象的創(chuàng)建Parameter對象是Command對象的子對象,它的創(chuàng)建方法是:Set Parameter對象 = Command對象. CreateParameter (name,type,direction,size,

29、value) 參數(shù)參數(shù)說明說明name參數(shù)名稱type參數(shù)類型。可省略direction參數(shù)方向,傳入或傳出。可省略size參數(shù)大小,即最長字節(jié)。可省略value參數(shù)值parameterparameter對象的創(chuàng)建對象的創(chuàng)建Type取值取值相應(yīng)數(shù)值相應(yīng)數(shù)值說明說明adDBTimeStamp 135日期時間類型adInteger3整數(shù)adSingle4單精度小數(shù)adDouble5雙精度小數(shù)adVarChar200變長字符串Direction取值取值相應(yīng)數(shù)值相應(yīng)數(shù)值說明說明AdParamInput1傳入AdParamOutput2傳出AdParamInputOutput3傳入傳出AdParamRe

30、turnValue4從子程序返回數(shù)據(jù)到該參數(shù)中parameterparameter對象的創(chuàng)建對象的創(chuàng)建參數(shù)對象創(chuàng)建實例:parameterparameter對象的創(chuàng)建對象的創(chuàng)建(1)要先創(chuàng)建Command對象,然后應(yīng)用Command對象的CreateParameter方法創(chuàng)建Parameter對象。 (2)有些參數(shù)可以省略,有些不能省略。省略時必須用”,”隔開。如Set prm=Comm. CreateParameter(“user1”,200,”mine”) (3)參數(shù)name必須為字符串,參數(shù)value的表達式要與其類型匹配。 ParametersParameters集合集合Paramet

31、ers集合parameter對象對象parameter對象對象parameter對象對象parameter對象對象Command對象對象ParametersParameters集合的屬性集合的屬性 countcountcount返回Parameters集合中Parameter對象個數(shù)。語法:Command對象. Parameters.count ParametersParameters集合的方法集合的方法 append append Append方法把Parameter對象加入到Parameters集合中。語法:Command對象.Parameters.Append Parameter對象 P

32、arametersParameters集合的方法集合的方法 delete delete Delete方法刪除Parameters集合中的一個Parameter對象。語法:Command對象.Parameters. Delete(i) i 為索引,取值范圍:(0,count-1) ParametersParameters集合的方法集合的方法 item item Item方法獲取Parameters集合中指定的Parameter對象 。語法:Command對象.Parameters.item(i) i 為索引,取值范圍:(0,count-1) ParametersParameters集合的方法集合

33、的方法 refresh refresh Refresh方法刷新Parameters中所有的Parameter對象。語法:Command對象ParametersParameters集合集合參數(shù)集合實例:參數(shù)查詢參數(shù)查詢 但很多情況下,我們需要查詢的信息的條件是變化的,這些條件用參數(shù)表示則為參數(shù)查詢法,參數(shù)查詢法可簡化SQL語句并提高查詢速度。 參數(shù)查詢實例:commandparameter_applylink 參數(shù)查詢參數(shù)查詢通過上述例子分析: (1)參數(shù)化的查詢在性能上有一定的優(yōu)化,因為帶參數(shù)的SQL語句在執(zhí)行中只需要被執(zhí)行引擎分析一次即可。Command的Parameters能夠為參數(shù)化查詢

34、設(shè)置參數(shù)值。 (2)不同的數(shù)據(jù)提供程序的Command對參數(shù)傳遞的使用不太一樣,其中SqlClient和OracleClient只支持SQL語句中命名參數(shù)而不支持問號占位符;而OleDb和Odbc數(shù)據(jù)提供程序只支持問號占位符,不支持命名參數(shù)。 參數(shù)查詢參數(shù)查詢通過上述例子分析: (3)關(guān)于參數(shù)對象direction屬性的設(shè)置。如果是“傳入”則表示該參數(shù)為調(diào)用它的程序提供值,類似于函數(shù)中的參數(shù);如果為輸出則表示調(diào)用它的程序要在結(jié)束時返回一個值給該參數(shù),類似于函數(shù)名。 參數(shù)查詢參數(shù)查詢?nèi)绻鸖QL語句中有多個參數(shù)該怎么實現(xiàn)?如:查詢信息的條件是一個組合條件,這兩個條件的值都為參數(shù)。 多個參數(shù)的查詢就

35、要設(shè)置多個參數(shù)對象,并且在順序上要和SQL語句中的參數(shù)占位符對應(yīng)一致。 RecordSetRecordSet對象對象數(shù)據(jù)庫數(shù)據(jù)庫網(wǎng)頁ADOConnection對象Command對象Recordset對象又稱記錄集對象。當connection對象或Command對象執(zhí)行命令后,就會得到一個由滿足條件的記錄所組成的虛擬記錄集。RecordSetRecordSet對象對象學(xué)習(xí)內(nèi)容:學(xué)習(xí)內(nèi)容:1. Recordset對象的屬性和方法 2. Recordset對象分頁顯示的功能 RecordSetRecordSet對象的概述對象的概述 當我們對數(shù)據(jù)庫進行操作時,特別是查詢符合條件的數(shù)據(jù)記錄時,往往要把查

36、詢到的記錄顯示出來。這時就需要設(shè)置一個Recordset對象來標記這個記錄集。 Recordset對象 的功能數(shù)據(jù)庫的增添、刪除、修改數(shù)據(jù)的查詢和分頁顯示 123rsRecordsetRecordset對象的創(chuàng)建對象的創(chuàng)建 之前我們是如何創(chuàng)建一個Recordset對象的?RecordsetRecordset對象的創(chuàng)建對象的創(chuàng)建方方 法法 一一 :RecordsetRecordset對象的創(chuàng)建對象的創(chuàng)建方方 法法 二二 :RecordsetRecordset對象的創(chuàng)建對象的創(chuàng)建 上述這兩種方法是利用Connection對象和Command對象的Execute方法,通過賦值形式建立Recordse

37、t對象。 建立Recordset對象標準的語法是: Dim rsset rsServer.CreateObject(“ADODB.Recordset”) RecordsetRecordset對象的創(chuàng)建對象的創(chuàng)建這兩種方法的區(qū)別在于: 前者:當recordset對象的實例賦值給該變量時,系統(tǒng)此時先設(shè)置該變量為recordset對象,然后把實例賦值給該變量。 后者:直接先設(shè)置該變量為recordset對象。 RecordsetRecordset對象對象123rsRecordset對象實質(zhì)上是指向一個記錄集的指針 RecordsetRecordset對象對象fieldsfields集合集合 一個記錄

38、集是由若干條記錄組成的,記錄又是由字段組成的,每個字段就是一個field對象,所有的field對象組成一個fields集合。 Field對象是recordset對象的子對象,所以通過recordset對象的移動和recordset對象子對象field對象的引用方法可以讀取每條記錄每個字段的值。 RecordsetRecordset對象對象fieldsfields集合集合1. recordset對象的 fields集合 Count屬性:返回記錄集中field對象(字段)的個數(shù)。 語法:recordset對象.fields.count RecordsetRecordset對象對象fieldsfie

39、lds集合集合對象的fields集合方法 Item:用于引用fields集合中某一個filed對象。 語法:recordset對象.fields.item(字段名或字段索引值)RecordsetRecordset對象對象fieldsfields集合集合3. field對象的屬性 recordset對象的每個field對象與數(shù)據(jù)庫中的數(shù)據(jù)表的字段相同,包括下列屬性: value屬性:字段值語法:field對象.valuename屬性:字段名稱語法:field對象.nameRecordsetRecordset對象對象fieldsfields集合集合字段引用方法:rs.fields.item(1)

40、等效 rs.fields.item(“name”) 等效rs.fields(1) 等效rs.fields(“name”) 等效rs(1) 等效rs(“name”) 分析范例:字段名稱表示方法:rs(1).name字段值表示方法:rs(1).value 等效于rs(1)Recordset對象的Source屬性Source該屬性用于設(shè)置數(shù)據(jù)庫操作信息。 什么是數(shù)據(jù)庫操作信息? Command對象名、表名、SQL語句等 語法:語法:Recordset對象.Source= 數(shù)據(jù)庫操作信息 Recordset對象的Source屬性 Recordset對象的Source屬性 Recordset對象的Act

41、iveConnection屬性前面我們學(xué)習(xí)過的哪個對象也有這個屬性?實現(xiàn)什么功能? Command對象也有該屬性,用于設(shè)置數(shù)據(jù)庫連接信息。 語法:語法:Recordset對象.ActiveConnection數(shù)據(jù)庫連接信息 Recordset對象的ActiveConnection屬性 Recordset對象的ActiveConnection屬性 Recordset對象的ActiveConnection屬性方法2中需要設(shè)置的值嗎?由于cmd已經(jīng)指明了ActiveConnection,而rs的source為cmd,所以已經(jīng)間接指明了,不需再設(shè)置。Recordset對象的CursorType屬性Cu

42、rsorType屬性用于設(shè)置記錄集指針游標類型。語法:語法:Recordset對象.CursorType=取值 CursorType參數(shù)數(shù)值說 明AdOpenForwardOnly0向前指針,只能利用MoveNext或GetRows向前移動檢索數(shù)據(jù),默認值A(chǔ)dOpenKeyset1鍵盤指針,在記錄集中可以向前或向后移動,當某客戶做了修改后(除了增加數(shù)據(jù)),其他用戶都可以立即顯示AdOpenDynamic2動態(tài)指針,在記錄集中可以向前或向后移動,所有修改都會立即在其他客戶端顯示AdOpenStatic3靜態(tài)指針,在記錄集中可以向前或向后移動,所有更新數(shù)據(jù)都不會在其他客戶端顯示Recordset對

43、象的LockType屬性LockType屬性用于設(shè)置記錄集的鎖定類型。語法:語法:Recordset對象.LockType取值LockType參數(shù)數(shù)值說 明AdLockReadOnly1只讀,默認值A(chǔ)dLockpessimistic2只能同時被一個客戶修改,修改時鎖定,修改完畢釋放AdLockOptimistic3可以同時被多個用戶修改AdLockBatchOptimistic4數(shù)據(jù)可以修改,但不鎖定其他用戶RecordsetRecordset對象的屬性小結(jié)對象的屬性小結(jié)Recordset對象的Source,activeconnection,cursortype,locktype這四個屬性的設(shè)

44、置在Recordset對象打開數(shù)據(jù)庫,操作數(shù)據(jù)庫中非常重要,其值的設(shè)置直接影響到操作的運行方式。Recordset對象的Open方法open方法 語法:語法:rs.open source, activeconnection,cursortype, locktype,options Options參數(shù)相應(yīng)數(shù)值說明adCmdUnknown-1CommandText參數(shù)類型無法確定,是系統(tǒng)默認值adCmdText1CommandText參數(shù)類型是SQL語句adCmdTable2CommandText參數(shù)類型是表名adCmdStoreProc 3CommandText參數(shù)類型是查詢名或存儲過程名Rec

45、ordsetRecordset對象的對象的Open方法 RecordsetRecordset對象的對象的Open方法 RecordsetRecordset對象的對象的Open方法(1)source, activeconnection, cursortype, locktype, options這些參數(shù)可以先設(shè)置,open中就可以省略。但是如果前面的參數(shù)省略,后面的參數(shù)不省略時,要用逗號隔開。如: rs.open select From users where name=李玫 ,1,2 (2)注意cursortype, locktype的取值。 RecordsetRecordset對象與分頁相關(guān)

46、的屬性對象與分頁相關(guān)的屬性Recordcount該屬性用于返回記錄集的記錄總數(shù)。 語法:語法:Recordset對象.recordcount 例子:RecordsetRecordset對象與分頁相關(guān)的屬性對象與分頁相關(guān)的屬性 Cursortype必須設(shè)置為1或3 RecordsetRecordset對象與分頁相關(guān)的屬性對象與分頁相關(guān)的屬性123rs.bofrs.eof記錄集的兩個特殊位置:RecordsetRecordset對象與分頁相關(guān)的屬性對象與分頁相關(guān)的屬性Bof 該屬性用于判斷當前的記錄集指針是否在記錄集的開頭,返回true或者false。 語法:Recordset對象.Bof Eof

47、 該屬性用于判斷當前的記錄集指針是否在記錄集的結(jié)尾,返回true或者false。 語法:Recordset對象.Eof RecordsetRecordset對象與分頁相關(guān)的屬性對象與分頁相關(guān)的屬性 對于非空記錄集,其指針可以在bof,所有記錄,eof之間移動。但不能移到bof和eof之外。對于空記錄集,其bof和eof在同一位置,指針不能移動。 RecordsetRecordset對象與分頁相關(guān)的屬性對象與分頁相關(guān)的屬性如何判斷一個記錄集是空記錄集? v if rs.eof=true and rs.bof=true then v if rs.recordcount=0 then 舉例:數(shù)據(jù)分頁

48、顯示相當于把記錄集分成n個小記錄集,顯示時把指定的小記錄集中的信息顯示出來。 RecordsetRecordset對象與分頁相關(guān)的屬性對象與分頁相關(guān)的屬性N=7RecordsetRecordset對象與分頁相關(guān)的屬性對象與分頁相關(guān)的屬性pageSize:該屬性設(shè)置數(shù)據(jù)分頁顯示時每頁的記錄數(shù)。語法為:Recordset對象.pagesize=整數(shù) 。 Pagesize=3最后一頁的記錄數(shù)小于等于pagesizeRecordsetRecordset對象與分頁相關(guān)的屬性對象與分頁相關(guān)的屬性pageCount:該屬性設(shè)置數(shù)據(jù)分頁顯示時數(shù)據(jù)頁的總數(shù)。語法為:Recordset對象.pagecount p

49、agecount=3N=7Pagesize=3RecordsetRecordset對象與分頁相關(guān)的屬性對象與分頁相關(guān)的屬性 當設(shè)置了RS的pagesize屬性后,如何求得pagecount? 當設(shè)置了RS的pagecount屬性后,如何求得pagesize?RecordsetRecordset對象與分頁相關(guān)的屬性對象與分頁相關(guān)的屬性AbsolutePage:該屬性設(shè)置當前指針位于哪一頁。語法:Recordset對象.absolutepage整數(shù) 定義了absolutepage的值后,指針立刻指向該頁的第一條記錄N=7Pagesize=3RecordsetRecordset對象與分頁相關(guān)的方法對

50、象與分頁相關(guān)的方法記錄集指針的移動方法:記錄集指針的移動方法:Movenext:記錄指針向前移動一條,即向下移動一條。 語法:Recordset對象.movenext Movelast: 記錄指針移到最后一條記錄。 語法:Recordset對象.movelast Moveprevious:記錄指針向后移動一條,即向上移動一條。 語法:Recordset對象.moveprevious RecordsetRecordset對象與分頁相關(guān)的方法對象與分頁相關(guān)的方法記錄集指針的移動方法:記錄集指針的移動方法:Movefirst: 記錄指針移到第一條記錄。 語法:Recordset對象.movefirst Move:記錄指針移動到指定的記錄。 語法:Recordset對象.move number,start 參數(shù)start:設(shè)置指針移動的開始位置,如省略默認為當前位置;參數(shù)number:設(shè)置指針從start位置前移或后移number條記錄。當number為正數(shù)表示向下移動number條記錄,當number為負,表示向上移動number條記錄。 RecordsetRecordset對象與分頁相關(guān)的方法對象與分頁相關(guān)的方法移動指針

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論