《资料控制项与资料存取物件.ppt》由会员分享,可在线阅读,更多相关《资料控制项与资料存取物件.ppt(37页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、資料控制項與資料存取物件資料庫控制項(Adodc)提供的功能有限方便,使用者不需要額外撰寫程式資料存取物件(ADO)功能較完整需要撰寫程式碼二者可以交互使用半自動完全手動ADO的子物件的子物件 Connection物件:用以連接資料庫Recordset物件:取得資料來源Command物件:儲存操作資料庫時用到的命令Parameter物件:管理查詢或預儲程式Field物件:儲存欄位資料Error物件:處理錯誤訊息Property物件:保存Connection,Command,Recordset 與Field物件屬性的物件物件間相對關係物件間相對關係ConnectionRecordsetField
2、sFieldCommandErrorPropertyPropertyPropertyParameter(s)物件物件集合物件集合物件如何存取物件成員如何存取物件成員?RecordsetFieldsField(0)Field(1)Field(2)Field(3)Field(4)使用使用索引編號索引編號編號從編號從0開始開始Recordset.Field(1)但是當物件索引編號太多但是當物件索引編號太多,誰還記得我要的是第幾個誰還記得我要的是第幾個如何存取物件成員如何存取物件成員?除了除了Recordset.Field(1)的寫法外的寫法外也可以使用物件的也可以使用物件的名稱名稱來存取來存取HOW
3、?Recordset對應的是對應的是一個資料表一個資料表Fields對應的是對應的是一筆資料一筆資料Field對應的是一筆資料中的對應的是一筆資料中的某個欄位某個欄位記欄位名稱一定比記索引編號更容易記欄位名稱一定比記索引編號更容易所以欄位一定要取有意義的名稱所以欄位一定要取有意義的名稱如何存取物件成員如何存取物件成員?除了除了Recordset.Field(1)的寫法外的寫法外也可以使用也可以使用Recordset.Field(“書名書名”)Recordset(“書名書名”)Recordset.Field!書名書名Recordset!書名書名ADO的功用的功用移動紀錄移動紀錄更新紀錄更新紀錄新
4、增紀錄新增紀錄刪除紀錄刪除紀錄搜尋紀錄搜尋紀錄篩選記錄篩選記錄排序紀錄排序紀錄還記得還記得Adodc控制項控制項中也介紹過此些功能嗎中也介紹過此些功能嗎?VB中如何引用中如何引用ADO?專案 設定引用項目 Microsoft ActiveX Data Objects 2.8如何建立如何建立ADO?1.宣告物件變數宣告物件變數(使用物件類別使用物件類別)2.將物件型態帶入變數中將物件型態帶入變數中(真正建立物件真正建立物件)物件物件類別名稱類別名稱ConnectionADODB.ConnectionErrorADODB.ErrorCommandADODB.CommandParameterADOD
5、B.ParameterRecordsetADODB.RecordsetFieldADODB.FieldPropertyADODB.Property如何建立如何建立ADO?例如要宣告一個例如要宣告一個Connection物件物件Dim Cn As ADODB.Connection物件變數物件變數物件類別物件類別完成完成宣告宣告物件變數物件變數,但是還但是還沒有建立沒有建立如何建立如何建立ADO?要建立一個要建立一個Connection物件物件Dim Cn As ADODB.ConnectionSet Cn=New ADODB.Connection物件變數物件變數建立物件建立物件完成物件的建立完成
6、物件的建立其他建立其他建立ADO物件的方法物件的方法Dim Cn As ADODB.ConnectionSet Cn=New ADODB.ConnectionDim Cn As ADODB.ConnectionSet Cn=CreatObject(ADODB.Connection)Dim Cn As New ADODB.Connection使用使用ADO物件物件有了物件之後要做的是希望從資料庫中存取與操作資料有了物件之後要做的是希望從資料庫中存取與操作資料如何做呢如何做呢?現在就真的要靠自己了現在就真的要靠自己了(懷念懷念adodc控制項嗎控制項嗎?)第一步應該是要先與資料庫取得聯繫第一步應該
7、是要先與資料庫取得聯繫所以所以Connection物件就先登場了物件就先登場了Connection物件物件1.建立物件建立物件2.設定設定ConnectionString屬性屬性 3.(還記得在還記得在adodc中也是設定此屬性中也是設定此屬性,不過是程式自動產生的不過是程式自動產生的)3.使用使用Connection物件的物件的Open方法方法ConnectionString屬性屬性1.一字串型態的參數一字串型態的參數2.每個關鍵參數以每個關鍵參數以;號區隔號區隔關鍵參數關鍵參數說明說明Provider連結資料庫時所提供的連結資料庫時所提供的OLE DB Provider(JET Engin
8、e)Data Source連結資料庫的完整路徑連結資料庫的完整路徑Location連結的伺服器名稱連結的伺服器名稱User ID連結資料庫或伺服器時的使用者名稱連結資料庫或伺服器時的使用者名稱Password連結資料庫或伺服器時的使用者密碼連結資料庫或伺服器時的使用者密碼File Name使用使用Data Link File連結時連結時.udl的檔名的檔名DSN使用使用ODBC DSN連結時的連結時的DSN名稱名稱DriverODBC驅動程式的名稱驅動程式的名稱DBQ使用使用ODBC連結時連結時,資料庫的檔名資料庫的檔名Provider種類種類資料庫種類Provider名稱AccessMicr
9、osoft.Jet.OLEDB.4.0ODBCMSDASQLSQL ServerSQLODEDBOracleMSDAORA連結開啟資料庫連結開啟資料庫Dim Cn as ADODB.ConnectionSet Cn=New ADODB.ConnectionCn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”_&“DATA Source=c:vb6dbbook.mdb”Cn.open建立物件設定ConnectionString屬性使用Open方法關閉連結資料庫關閉連結資料庫使用使用Close方法方法 Cn.Close不過如此只是將佔用的系
10、統資源釋放不過如此只是將佔用的系統資源釋放,記憶體中記憶體中的資料庫資料並不會被移除的資料庫資料並不會被移除,可以再使用可以再使用Cn.Open來再度開啟連結來再度開啟連結Set Cn=nothing 可完全從記憶體釋放可完全從記憶體釋放Cn.close連結資料庫連結資料庫Open方法與方法與ConnectionString屬性的合併屬性的合併Cn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”_&“DATA Source=c:vb6dbbook.mdb”Cn.open Cn.open“Provider=Microsoft.Jet.OL
11、EDB.4.0;”_&“DATA Source=c:vb6dbbook.mdb”或或Cstr=“Provider=Microsoft.Jet.OLEDB.4.0;”_&“DATA Source=c:vb6dbbook.mdb”Cn.open Cstr使用使用ODBC DSN連結資料庫連結資料庫Dim Cn as ADODB.ConnectionSet Cn=New ADODB.ConnectionCn.ConnectionString=“DSN=cnBook”Cn.open 或或Dim Cn as ADODB.ConnectionSet Cn=New ADODB.ConnectionCn.op
12、en“DSN=cnBook”有有Username與與Password連結資料庫連結資料庫Dim Cn as ADODB.ConnectionSet Cn=New ADODB.ConnectionCn.ConnectionString=“DSN=cnbook;User ID=sa;Password=xxx”Cn.open 或或Dim Cn as ADODB.ConnectionSet Cn=New ADODB.ConnectionCn.open“DSN=cnbook”,”User ID=sa”,“Password=xxx”Practice其中有關其中有關Recordset的部分留待下一節再詳述的
13、部分留待下一節再詳述連上資料庫後呢連上資料庫後呢?終於可以連結上資料庫了終於可以連結上資料庫了,然後呢然後呢?應該是要存取與操作資料應該是要存取與操作資料,所以輪到所以輪到Recordset物件登場物件登場建立建立Recordset物件物件1.建立建立Recordset物件物件2.設定設定Source與與ActiveConnection屬性屬性 3.使用使用Open方法方法是不是與是不是與Connection物件的步驟類似物件的步驟類似?沒錯大部分的物件建立步驟都類似沒錯大部分的物件建立步驟都類似建立建立Recordset物件的方法物件的方法Dim rs As ADODB.RecordsetS
14、et rs=New ADODB.RecordsetDim rs As ADODB.RecordsetSet rs=CreatObject(ADODB.Recordset)Dim rs As New ADODB.RecordsetSource與與ActiveConnection屬性屬性Source:表示要連結的資料表表示要連結的資料表ActiveConnection:表示連結的資料庫表示連結的資料庫(即即Connection物件物件)Source屬性屬性Dim rs as ADODB.RecordsetSet rs=New ADODB.RecordsetRs.Source=“書籍書籍”資料表名稱
15、資料表名稱AvtiveConnection屬性與屬性與Open方法方法Dim Cn as ADODB.ConnectionDim Rs as ADODB.RecordsetSet Cn=New ADODB.ConnectionCn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.3.51;”_&“DATA Source=c:vb6dbbook.mdb”Cn.openSet Rs=New ADODB.RecordsetRs.Source=“書籍書籍”Rs.ActiveConnection=CnRs.open關閉資料表關閉資料表使用使用Close方法方
16、法 Rs.Close不過如此只是將佔用的系統資源釋放不過如此只是將佔用的系統資源釋放,記憶體中記憶體中的資料庫資料並不會被移除的資料庫資料並不會被移除,可以再使用可以再使用Rs.Open來再度開啟連結來再度開啟連結Set Rs=nothing 可完全從記憶體釋放可完全從記憶體釋放Rs.closePractice再論再論Recordset的的Open方法方法Source與與ActiveConnection的設定可以與的設定可以與Open方法方法合併合併Rs.Source=“書籍書籍”Rs.ActiveConnection=Cn =Rs.open“書籍書籍”,CnRs.openRecordset.
17、open Source,ActiveConnection,Cursortype,Locktype,OptionsCursortype標示如何操作資料表標示如何操作資料表種類值說明AdOpenForwardOnly0只可向前移動AdOpenKeySet1可以自由移動AdOpenDynamic2可動態更新編輯AdOpenStatic3靜態更新編輯CursorTypenDynamic:adOpenDynamicnFully updateable recordset nAll actions made by other users while the recordset is open are vis
18、iblenAll types of movement(up and down)nKeyset:adOpenKeysetnUpdateable recordsetnIt prevents access to records that other users add after it was creatednAll types of movementnStatic:adOpenStaticnStatic non-updateable recordset(retrieve data)nChanges made by other users while the recordset is open ar
19、ent visiblenAll types of movementnForward-only:adOpenForwardOnly(default)nStatic non-updateable recordset nOnly Scroll forward through the records(MoveNext,GetRows)Actions:Insert,Update&Delete使用使用CursortypeRs.Source=“書籍書籍”Rs.ActiveConnection=Cn Rs.Cursortype=AdOpenDynamicRs.open或或Rs.Open“書籍書籍”,Cn,Ad
20、OpenDynamicLockType標示如何鎖定資料表標示如何鎖定資料表種類值說明AdOpenReadOnly1唯讀AdOpenPessimistic2悲觀鎖定,取得資料表後鎖定AdOpenOptimistic3樂觀鎖定,更新時才鎖定AdOpenBatchOptimistic4批次樂觀鎖定,需下UPDATE BatchLockTypenadLockReadOnlynCannot alter the data(no updates,inserts,or deletions)nadLockPessimistic(better at the databases integrity)nRecord
21、lock during editingnLock out everyone else from the record youre editingnLock from the time of first change until call the Update methodnadLockOptimisticnNo lock during editing nLock the record only during the call to UpdatenadLockBatchOptimisticnNo lock during editing(modify,insert,delete)nBatch update:Lock the records only during the call to UpdateBatch使用使用LockTypeRs.Source=“書籍書籍”Rs.ActiveConnection=Cn Rs.Cursortype=AdOpenDynamicRs.LockType=AdOpenPessimisticRs.open或或Rs.Open“書籍書籍”,Cn,AdOpenDynamic,AdOpenPessimistic
限制150内