控制项与存取物件课件_第1页
控制项与存取物件课件_第2页
控制项与存取物件课件_第3页
控制项与存取物件课件_第4页
控制项与存取物件课件_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

資料控制項與資料存取物件資料庫控制項(Adodc)提供的功能有限方便,使用者不需要額外撰寫程式資料存取物件(ADO)功能較完整需要撰寫程式碼二者可以交互使用半自動完全手動資料控制項與資料存取物件資料庫控制項(Adodc)二者可1ADO的子物件Connection物件:用以連接資料庫Recordset物件:取得資料來源Command物件:儲存操作資料庫時用到的命令Parameter物件:管理查詢或預儲程式Field物件:儲存欄位資料Error物件:處理錯誤訊息Property物件:保存Connection,Command,Recordset

與Field物件屬性的物件ADO的子物件Connection物件:用以連接資料庫2物件間相對關係ConnectionRecordsetFieldsFieldCommandErrorPropertyPropertyPropertyParameter(s)物件集合物件物件間相對關係ConnectionRecordsetFiel3如何存取物件成員?RecordsetFieldsField(0)Field(1)Field(2)Field(3)Field(4)使用索引編號編號從0開始Recordset.Field(1)但是當物件索引編號太多,誰還記得我要的是第幾個如何存取物件成員?RecordsetFieldsField4如何存取物件成員?除了Recordset.Field(1)的寫法外也可以使用物件的名稱來存取HOW?Recordset對應的是一個資料表Fields對應的是一筆資料Field對應的是一筆資料中的某個欄位記欄位名稱一定比記索引編號更容易所以欄位一定要取有意義的名稱如何存取物件成員?除了Recordset.Field(1)5如何存取物件成員?除了Recordset.Field(1)的寫法外也可以使用Recordset.Field(“書名”)Recordset(“書名”)Recordset.Field!書名Recordset!書名如何存取物件成員?除了Recordset.Field(1)6ADO的功用移動紀錄更新紀錄新增紀錄刪除紀錄搜尋紀錄篩選記錄排序紀錄還記得Adodc控制項中也介紹過此些功能嗎?ADO的功用移動紀錄還記得Adodc控制項中也介紹過此些功能7VB中如何引用ADO?專案設定引用項目MicrosoftActiveXDataObjects2.8VB中如何引用ADO?專案設定引用項目Mic8如何建立ADO?宣告物件變數(使用物件類別)將物件型態帶入變數中(真正建立物件)物件類別名稱ConnectionADODB.ConnectionErrorADODB.ErrorCommandADODB.CommandParameterADODB.ParameterRecordsetADODB.RecordsetFieldADODB.FieldPropertyADODB.Property如何建立ADO?宣告物件變數(使用物件類別)物件類別名稱C9如何建立ADO?例如要宣告一個Connection物件DimCnAsADODB.Connection物件變數物件類別完成宣告物件變數,但是還沒有建立如何建立ADO?例如要宣告一個Connection物件物件變10如何建立ADO?要建立一個Connection物件DimCnAsADODB.ConnectionSetCn=NewADODB.Connection物件變數建立物件完成物件的建立如何建立ADO?要建立一個Connection物件物件變數建11其他建立ADO物件的方法DimCnAsADODB.ConnectionSetCn=NewADODB.ConnectionDimCnAsADODB.ConnectionSetCn=CreatObject(ADODB.Connection)DimCnAsNewADODB.Connection其他建立ADO物件的方法DimCnAsADODB.Co12使用ADO物件有了物件之後要做的是希望從資料庫中存取與操作資料如何做呢??現在就真的要靠自己了(懷念adodc控制項嗎?)第一步應該是要先與資料庫取得聯繫所以Connection物件就先登場了使用ADO物件有了物件之後要做的是希望從資料庫中存取與操作資13Connection物件建立物件設定ConnectionString屬性

(還記得在adodc中也是設定此屬性,不過是程式自動產生的)使用Connection物件的Open方法Connection物件建立物件14ConnectionString屬性一字串型態的參數每個關鍵參數以;號區隔關鍵參數說明Provider連結資料庫時所提供的OLEDBProvider(JETEngine)DataSource連結資料庫的完整路徑Location連結的伺服器名稱UserID連結資料庫或伺服器時的使用者名稱Password連結資料庫或伺服器時的使用者密碼FileName使用DataLinkFile連結時.udl的檔名DSN使用ODBCDSN連結時的DSN名稱DriverODBC驅動程式的名稱DBQ使用ODBC連結時,資料庫的檔名ConnectionString屬性一字串型態的參數關鍵參數15Provider種類資料庫種類Provider名稱AccessMicrosoft.Jet.OLEDB.4.0ODBCMSDASQLSQLServerSQLODEDBOracleMSDAORAProvider種類資料庫種類Provider名稱Acces16連結開啟資料庫DimCnasADODB.ConnectionSetCn=NewADODB.ConnectionCn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”_&“DATASource=c:\vb6\db\book.mdb”Cn.open建立物件設定ConnectionString屬性使用Open方法連結開啟資料庫DimCnasADODB.Connect17關閉連結資料庫使用Close方法

Cn.Close不過如此只是將佔用的系統資源釋放,記憶體中的資料庫資料並不會被移除,可以再使用Cn.Open來再度開啟連結SetCn=nothing可完全從記憶體釋放Cn.close關閉連結資料庫使用Close方法18連結資料庫Open方法與ConnectionString屬性的合併Cn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”_&“DATASource=c:\vb6\db\book.mdb”Cn.open

Cn.open

“Provider=Microsoft.Jet.OLEDB.4.0;”_&“DATASource=c:\vb6\db\book.mdb”

或Cstr=“Provider=Microsoft.Jet.OLEDB.4.0;”_&“DATASource=c:\vb6\db\book.mdb”Cn.openCstr連結資料庫Open方法與ConnectionString屬性19使用ODBCDSN連結資料庫DimCnasADODB.ConnectionSetCn=NewADODB.ConnectionCn.ConnectionString=“DSN=cnBook”Cn.open

或DimCnasADODB.ConnectionSetCn=NewADODB.ConnectionCn.open

“DSN=cnBook”使用ODBCDSN連結資料庫DimCnasADODB20有Username與Password連結資料庫DimCnasADODB.ConnectionSetCn=NewADODB.ConnectionCn.ConnectionString=“DSN=cnbook;UserID=sa;Password=xxx”Cn.open

或DimCnasADODB.ConnectionSetCn=NewADODB.ConnectionCn.open

“DSN=cnbook”,”UserID=sa”,“Password=xxx”有Username與Password連結資料庫DimCn21Practice其中有關Recordset的部分留待下一節再詳述Practice其中有關Recordset的部分留待下一節再22連上資料庫後呢??終於可以連結上資料庫了,然後呢??應該是要存取與操作資料,所以輪到Recordset物件登場連上資料庫後呢??終於可以連結上資料庫了,然後呢??應該是要23建立Recordset物件建立Recordset物件設定Source與ActiveConnection屬性使用Open方法是不是與Connection物件的步驟類似?沒錯大部分的物件建立步驟都類似建立Recordset物件建立Recordset物件是不是與24建立Recordset物件的方法DimrsAsADODB.RecordsetSetrs=NewADODB.RecordsetDimrsAsADODB.RecordsetSetrs=CreatObject(ADODB.Recordset)DimrsAsNewADODB.Recordset建立Recordset物件的方法DimrsAsADOD25Source與ActiveConnection屬性Source:表示要連結的資料表ActiveConnection:表示連結的資料庫(即Connection物件)Source與ActiveConnection屬性Sourc26Source屬性DimrsasADODB.RecordsetSetrs=NewADODB.RecordsetRs.Source=“書籍”資料表名稱Source屬性DimrsasADODB.Record27AvtiveConnection屬性與Open方法DimCnasADODB.ConnectionDimRsasADODB.RecordsetSetCn=NewADODB.ConnectionCn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.3.51;”_&“DATASource=c:\vb6\db\book.mdb”Cn.openSetRs=NewADODB.RecordsetRs.Source=“書籍”Rs.ActiveConnection=CnRs.openAvtiveConnection屬性與Open方法DimC28關閉資料表使用Close方法

Rs.Close不過如此只是將佔用的系統資源釋放,記憶體中的資料庫資料並不會被移除,可以再使用Rs.Open來再度開啟連結SetRs=nothing可完全從記憶體釋放Rs.close關閉資料表使用Close方法29PracticePractice30再論Recordset的Open方法Source與ActiveConnection的設定可以與Open方法合併Rs.Source=“書籍”Rs.ActiveConnection=Cn==Rs.open“書籍”,CnRs.openRecordset.openSource,ActiveConnection,Cursortype,Locktype,Options再論Recordset的Open方法Source與Activ31Cursortype標示如何操作資料表種類值說明AdOpenForwardOnly0只可向前移動AdOpenKeySet1可以自由移動AdOpenDynamic2可動態更新編輯AdOpenStatic3靜態更新編輯Cursortype標示如何操作資料表種類值說明AdOpen32CursorTypeDynamic:adOpenDynamic Fullyupdateablerecordset Allactionsmadebyotheruserswhiletherecordsetisopenarevisible Alltypesofmovement(upanddown) Keyset:adOpenKeyset Updateablerecordset Itpreventsaccesstorecordsthatotherusersaddafteritwascreated AlltypesofmovementStatic:adOpenStatic

Staticnon-updateablerecordset(retrievedata) Changesmadebyotheruserswhiletherecordsetisopenaren’tvisible AlltypesofmovementForward-only:adOpenForwardOnly(default)

Staticnon-updateablerecordset OnlyScrollforwardthroughtherecords(MoveNext,GetRows)

Actions:Insert,Update&DeleteCursorTypeDynamic:adOpenDynam33使用CursortypeRs.Source=“書籍”Rs.ActiveConnection=CnRs.Cursortype=AdOpenDynamicRs.open或Rs.Open“書籍”,Cn,AdOpenDynamic使用CursortypeRs.Source=“書籍”34LockType標示如何鎖定資料表種類值說明AdOpenReadOnly1唯讀AdOpenPessimistic2悲觀鎖定,取得資料表後鎖定AdOpenOptimistic3樂觀鎖定,更新時才鎖定AdOpenBatchOptimistic4批次樂觀鎖定,需下UPDATEBatchLockType標示如何鎖定資料表種類值說明AdOpenRe35LockTypeadLockReadOnly

Cannotalterthedata(noupdates,inserts,ordeletions)adLockPessimistic(betteratthedatabase’sintegrity)

Recordlockduringediting Lockouteveryoneelsefromtherecordyou’reediting LockfromthetimeoffirstchangeuntilcalltheUpdatemethodadLockOptimistic

Nolockduringediting LocktherecordonlyduringthecalltoUpdateadLockBatchOptimistic Nolockduringediting(modify,insert,delete)

Batchupdate:LocktherecordsonlyduringthecalltoUpdateBatchLockTypeadLockReadOnly36使用LockTypeRs.Source=“書籍”Rs.ActiveConnection=CnRs.Cursortype=AdOpenDynamicRs.LockType=AdOpenPessimisticRs.open或Rs.Open“書籍”,Cn,AdOpenDynamic,AdOpenPessimistic使用LockTypeRs.Source=“書籍”37資料控制項與資料存取物件資料庫控制項(Adodc)提供的功能有限方便,使用者不需要額外撰寫程式資料存取物件(ADO)功能較完整需要撰寫程式碼二者可以交互使用半自動完全手動資料控制項與資料存取物件資料庫控制項(Adodc)二者可38ADO的子物件Connection物件:用以連接資料庫Recordset物件:取得資料來源Command物件:儲存操作資料庫時用到的命令Parameter物件:管理查詢或預儲程式Field物件:儲存欄位資料Error物件:處理錯誤訊息Property物件:保存Connection,Command,Recordset

與Field物件屬性的物件ADO的子物件Connection物件:用以連接資料庫39物件間相對關係ConnectionRecordsetFieldsFieldCommandErrorPropertyPropertyPropertyParameter(s)物件集合物件物件間相對關係ConnectionRecordsetFiel40如何存取物件成員?RecordsetFieldsField(0)Field(1)Field(2)Field(3)Field(4)使用索引編號編號從0開始Recordset.Field(1)但是當物件索引編號太多,誰還記得我要的是第幾個如何存取物件成員?RecordsetFieldsField41如何存取物件成員?除了Recordset.Field(1)的寫法外也可以使用物件的名稱來存取HOW?Recordset對應的是一個資料表Fields對應的是一筆資料Field對應的是一筆資料中的某個欄位記欄位名稱一定比記索引編號更容易所以欄位一定要取有意義的名稱如何存取物件成員?除了Recordset.Field(1)42如何存取物件成員?除了Recordset.Field(1)的寫法外也可以使用Recordset.Field(“書名”)Recordset(“書名”)Recordset.Field!書名Recordset!書名如何存取物件成員?除了Recordset.Field(1)43ADO的功用移動紀錄更新紀錄新增紀錄刪除紀錄搜尋紀錄篩選記錄排序紀錄還記得Adodc控制項中也介紹過此些功能嗎?ADO的功用移動紀錄還記得Adodc控制項中也介紹過此些功能44VB中如何引用ADO?專案設定引用項目MicrosoftActiveXDataObjects2.8VB中如何引用ADO?專案設定引用項目Mic45如何建立ADO?宣告物件變數(使用物件類別)將物件型態帶入變數中(真正建立物件)物件類別名稱ConnectionADODB.ConnectionErrorADODB.ErrorCommandADODB.CommandParameterADODB.ParameterRecordsetADODB.RecordsetFieldADODB.FieldPropertyADODB.Property如何建立ADO?宣告物件變數(使用物件類別)物件類別名稱C46如何建立ADO?例如要宣告一個Connection物件DimCnAsADODB.Connection物件變數物件類別完成宣告物件變數,但是還沒有建立如何建立ADO?例如要宣告一個Connection物件物件變47如何建立ADO?要建立一個Connection物件DimCnAsADODB.ConnectionSetCn=NewADODB.Connection物件變數建立物件完成物件的建立如何建立ADO?要建立一個Connection物件物件變數建48其他建立ADO物件的方法DimCnAsADODB.ConnectionSetCn=NewADODB.ConnectionDimCnAsADODB.ConnectionSetCn=CreatObject(ADODB.Connection)DimCnAsNewADODB.Connection其他建立ADO物件的方法DimCnAsADODB.Co49使用ADO物件有了物件之後要做的是希望從資料庫中存取與操作資料如何做呢??現在就真的要靠自己了(懷念adodc控制項嗎?)第一步應該是要先與資料庫取得聯繫所以Connection物件就先登場了使用ADO物件有了物件之後要做的是希望從資料庫中存取與操作資50Connection物件建立物件設定ConnectionString屬性

(還記得在adodc中也是設定此屬性,不過是程式自動產生的)使用Connection物件的Open方法Connection物件建立物件51ConnectionString屬性一字串型態的參數每個關鍵參數以;號區隔關鍵參數說明Provider連結資料庫時所提供的OLEDBProvider(JETEngine)DataSource連結資料庫的完整路徑Location連結的伺服器名稱UserID連結資料庫或伺服器時的使用者名稱Password連結資料庫或伺服器時的使用者密碼FileName使用DataLinkFile連結時.udl的檔名DSN使用ODBCDSN連結時的DSN名稱DriverODBC驅動程式的名稱DBQ使用ODBC連結時,資料庫的檔名ConnectionString屬性一字串型態的參數關鍵參數52Provider種類資料庫種類Provider名稱AccessMicrosoft.Jet.OLEDB.4.0ODBCMSDASQLSQLServerSQLODEDBOracleMSDAORAProvider種類資料庫種類Provider名稱Acces53連結開啟資料庫DimCnasADODB.ConnectionSetCn=NewADODB.ConnectionCn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”_&“DATASource=c:\vb6\db\book.mdb”Cn.open建立物件設定ConnectionString屬性使用Open方法連結開啟資料庫DimCnasADODB.Connect54關閉連結資料庫使用Close方法

Cn.Close不過如此只是將佔用的系統資源釋放,記憶體中的資料庫資料並不會被移除,可以再使用Cn.Open來再度開啟連結SetCn=nothing可完全從記憶體釋放Cn.close關閉連結資料庫使用Close方法55連結資料庫Open方法與ConnectionString屬性的合併Cn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”_&“DATASource=c:\vb6\db\book.mdb”Cn.open

Cn.open

“Provider=Microsoft.Jet.OLEDB.4.0;”_&“DATASource=c:\vb6\db\book.mdb”

或Cstr=“Provider=Microsoft.Jet.OLEDB.4.0;”_&“DATASource=c:\vb6\db\book.mdb”Cn.openCstr連結資料庫Open方法與ConnectionString屬性56使用ODBCDSN連結資料庫DimCnasADODB.ConnectionSetCn=NewADODB.ConnectionCn.ConnectionString=“DSN=cnBook”Cn.open

或DimCnasADODB.ConnectionSetCn=NewADODB.ConnectionCn.open

“DSN=cnBook”使用ODBCDSN連結資料庫DimCnasADODB57有Username與Password連結資料庫DimCnasADODB.ConnectionSetCn=NewADODB.ConnectionCn.ConnectionString=“DSN=cnbook;UserID=sa;Password=xxx”Cn.open

或DimCnasADODB.ConnectionSetCn=NewADODB.ConnectionCn.open

“DSN=cnbook”,”UserID=sa”,“Password=xxx”有Username與Password連結資料庫DimCn58Practice其中有關Recordset的部分留待下一節再詳述Practice其中有關Recordset的部分留待下一節再59連上資料庫後呢??終於可以連結上資料庫了,然後呢??應該是要存取與操作資料,所以輪到Recordset物件登場連上資料庫後呢??終於可以連結上資料庫了,然後呢??應該是要60建立Recordset物件建立Recordset物件設定Source與ActiveConnection屬性使用Open方法是不是與Connection物件的步驟類似?沒錯大部分的物件建立步驟都類似建立Recordset物件建立Recordset物件是不是與61建立Recordset物件的方法DimrsAsADODB.RecordsetSetrs=NewADODB.RecordsetDimrsAsADODB.RecordsetSetrs=CreatObject(ADODB.Recordset)DimrsAsNewADODB.Recordset建立Recordset物件的方法DimrsAsADOD62Source與ActiveConnection屬性Source:表示要連結的資料表ActiveConnection:表示連結的資料庫(即Connection物件)Source與ActiveConnection屬性Sourc63Source屬性DimrsasADODB.RecordsetSetrs=NewADODB.RecordsetRs.Source=“書籍”資料表名稱Source屬性DimrsasADODB.Record64AvtiveConnection屬性與Open方法DimCnasADODB.ConnectionDimRsasADODB.RecordsetSetCn=NewADODB.ConnectionCn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.3.51;”_&“DATASource=c:\vb6\db\book.mdb”Cn.openSetRs=NewADODB.RecordsetRs.Source=“書籍”Rs.ActiveConnection=CnRs.openAvtiveConnection屬性與Open方法DimC65關閉資料表使用Close方法

Rs.Close不過如此只是將佔用的系統資源釋放,記憶體中的資料庫資料並不會被移除,可以再使用Rs.Open來再度開啟連結SetRs=nothing可完全從記憶體釋放Rs.close關閉資料表使用Close方法66PracticePractice67再論Recordset的Open方法Source與ActiveConnection的設定可以與Open方法合併Rs.Source=“書籍”Rs.ActiveConnection=Cn==Rs.open“書籍”,CnRs.openRecordset.openSource,ActiveConnection,Cursortype,Locktype,Options再論Recordset的Open方法Source與Activ68Cursortype標示如何操作資料表種類值說明AdOpenForwardOnly0只可向前移動AdOpenKeySet1可以自由移動AdOpenDynamic2可動態更新編輯AdOpenStatic3靜態更新編輯Cursortype標示如何操作資料表種類值說明AdOpen69CursorTypeDynamic:adOpenDynamic Fullyupdateablerecordset Allactionsmadebyotheruserswhiletherecordsetisopenarevisible Alltypesofmovement(upanddown) Keyset:adOpenKeyset Updateablerecordset Itpreventsaccesstorecordsthatotherusersaddafter

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论