资源描述
,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,資料控制項與資料存取物件,資料庫控制項(,Adodc,),提供的功能有限,方便,使用者不需要額外撰寫程式,資料存取物件(,ADO,),功能較完整,需要撰寫程式碼,二者可以交互使用,半自動,完全手動,資料控制項與資料存取物件資料庫控制項(Adodc)二者可,1,ADO,的子物件,Connection,物件:用以連接資料庫,Recordset,物件:取得資料來源,Command,物件:儲存操作資料庫時用到的命令,Parameter,物件:管理查詢或預儲程式,Field,物件:儲存欄位資料,Error,物件:處理錯誤訊息,Property,物件:保存,Connection,Command,Recordset,與,Field,物件屬性的物件,ADO的子物件 Connection物件:用以連接資料庫,2,物件間相對關係,Connection,Recordset,Fields,Field,Command,Error,Property,Property,Property,Parameter(s),物件,集合物件,物件間相對關係ConnectionRecordsetFiel,3,如何存取物件成員?,Recordset,Fields,Field(0),Field(1),Field(2),Field(3),Field(4),使用,索引編號,編號從,0,開始,Recordset.Field(1),但是當物件索引編號太多,誰還記得我要的是第幾個,如何存取物件成員?RecordsetFieldsField,4,如何存取物件成員?,除了,Recordset.Field(1),的寫法外,也可以使用物件的,名稱,來存取,HOW?,Recordset,對應的是,一個資料表,Fields,對應的是,一筆資料,Field,對應的是一筆資料中的,某個欄位,記欄位名稱一定比記索引編號更容易,所以欄位一定要取有意義的名稱,如何存取物件成員?除了Recordset.Field(1),5,如何存取物件成員?,除了,Recordset.Field(1),的寫法外,也可以使用,Recordset.Field(“,書名”),Recordset(“,書名”),Recordset.Field!,書名,Recordset!,書名,如何存取物件成員?除了Recordset.Field(1),6,ADO,的功用,移動紀錄,更新紀錄,新增紀錄,刪除紀錄,搜尋紀錄,篩選記錄,排序紀錄,還記得,Adodc,控制項,中也介紹過此些功能嗎?,ADO的功用移動紀錄還記得Adodc控制項中也介紹過此些功能,7,VB,中如何引用,ADO?,專案,設定引用項目,Microsoft ActiveX Data Objects 2.8,VB中如何引用ADO?專案 設定引用項目 Mic,8,如何建立,ADO?,宣告物件變數(使用物件類別,),將物件型態帶入變數中(真正建立物件),物件,類別名稱,Connection,ADODB.Connection,Error,ADODB.Error,Command,ADODB.Command,Parameter,ADODB.Parameter,Recordset,ADODB.Recordset,Field,ADODB.Field,Property,ADODB.Property,如何建立ADO?宣告物件變數(使用物件類別)物件類別名稱C,9,如何建立,ADO?,例如要宣告一個,Connection,物件,Dim Cn As ADODB.Connection,物件變數,物件類別,完成,宣告,物件變數,但是還,沒有建立,如何建立ADO?例如要宣告一個Connection物件物件變,10,如何建立,ADO?,要建立一個,Connection,物件,Dim Cn As ADODB.Connection,Set Cn=New ADODB.Connection,物件變數,建立物件,完成物件的建立,如何建立ADO?要建立一個Connection物件物件變數建,11,其他建立,ADO,物件的方法,Dim Cn As ADODB.Connection,Set Cn=New ADODB.Connection,Dim Cn As ADODB.Connection,Set Cn=CreatObject(ADODB.Connection),Dim Cn As New ADODB.Connection,其他建立ADO物件的方法Dim Cn As ADODB.Co,12,使用,ADO,物件,有了物件之後要做的是希望從資料庫中存取與操作資料,如何做呢?現在就真的要靠自己了(懷念,adodc,控制項嗎?),第一步應該是要先與資料庫取得聯繫,所以,Connection,物件就先登場了,使用ADO物件有了物件之後要做的是希望從資料庫中存取與操作資,13,Connection,物件,建立物件,設定,ConnectionString,屬性,(還記得在,adodc,中也是設定此屬性,不過是程式自動產生的),使用,Connection,物件的,Open,方法,Connection物件建立物件,14,ConnectionString,屬性,一字串型態的參數,每個關鍵參數以,;,號區隔,關鍵參數,說明,Provider,連結資料庫時所提供的,OLE DB Provider(JET Engine),Data Source,連結資料庫的完整路徑,Location,連結的伺服器名稱,User ID,連結資料庫或伺服器時的使用者名稱,Password,連結資料庫或伺服器時的使用者密碼,File Name,使用,Data Link File,連結時.,udl,的檔名,DSN,使用,ODBC DSN,連結時的,DSN,名稱,Driver,ODBC,驅動程式的名稱,DBQ,使用,ODBC,連結時,資料庫的檔名,ConnectionString屬性一字串型態的參數關鍵參數,15,Provider,種類,資料庫種類,Provider,名稱,Access,Microsoft.Jet.OLEDB.4.0,ODBC,MSDASQL,SQL Server,SQLODEDB,Oracle,MSDAORA,Provider種類資料庫種類Provider名稱Acces,16,連結開啟資料庫,Dim Cn as ADODB.Connection,Set Cn=New ADODB.Connection,Cn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”_,&“DATA Source=c:vb6dbbook.mdb”,Cn.open,建立物件,設定,ConnectionString,屬性,使用,Open,方法,連結開啟資料庫Dim Cn as ADODB.Connect,17,關閉連結資料庫,使用,Close,方法,Cn.Close,不過如此只是將佔用的系統資源釋放,記憶體中,的資料庫資料並不會被移除,可以再使用,Cn.Open,來再度開啟連結,Set Cn=nothing,可完全從記憶體釋放,Cn.close,關閉連結資料庫使用Close方法,18,連結資料庫,Open,方法與,ConnectionString,屬性的合併,Cn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”_,&“DATA Source=c:vb6dbbook.mdb”,Cn.open,Cn.open,“Provider=Microsoft.Jet.OLEDB.4.0;”_,&“DATA Source=c:vb6dbbook.mdb”,或,Cstr=“Provider=Microsoft.Jet.OLEDB.4.0;”_,&“DATA Source=c:vb6dbbook.mdb”,Cn.open Cstr,連結資料庫Open方法與ConnectionString屬性,19,使用,ODBC DSN,連結資料庫,Dim Cn as ADODB.Connection,Set Cn=New ADODB.Connection,Cn.ConnectionString=,“DSN=cnBook”,Cn.open,或,Dim Cn as ADODB.Connection,Set Cn=New ADODB.Connection,Cn.open,“DSN=cnBook”,使用ODBC DSN連結資料庫Dim Cn as ADODB,20,有,Username,與,Password,連結資料庫,Dim Cn as ADODB.Connection,Set Cn=New ADODB.Connection,Cn.ConnectionString=,“DSN=cnbook;User ID=sa;Password=xxx”,Cn.open,或,Dim Cn as ADODB.Connection,Set Cn=New ADODB.Connection,Cn.open,“DSN=cnbook”,”User ID=sa”,“Password=xxx”,有Username與Password連結資料庫Dim Cn,21,Practice,其中有關,Recordset,的部分留待下一節再詳述,Practice其中有關Recordset的部分留待下一節再,22,連上資料庫後呢?,終於可以連結上資料庫了,然後呢?,應該是要存取與操作資料,所以輪到,Recordset,物件登場,連上資料庫後呢?終於可以連結上資料庫了,然後呢?應該是要,23,建立,Recordset,物件,建立,Recordset,物件,設定,Source,與,ActiveConnection,屬性,使用,Open,方法,是不是與,Connection,物件的步驟類似?,沒錯大部分的物件建立步驟都類似,建立Recordset物件建立Recordset物件是不是與,24,建立,Recordset,物件的方法,Dim rs As ADODB.,Recordset,Set rs=New ADODB,.Recordset,Dim rs As ADODB.,Recordset,Set rs=CreatObject(ADODB.,Recordset,),Dim rs As New ADODB.,Recordset,建立Recordset物件的方法Dim rs As ADOD,25,Source,與,ActiveConnection,屬性,Source:,表示要連結的資料表,ActiveConnection:,表示連結的資料庫,(即,Connection,物件),Source與ActiveConnection屬性Sourc,26,Source,屬性,Dim rs as ADODB.Recordset,Set rs=New ADODB.Recordset,Rs.Source=“,書籍”,資料表名稱,Source屬性Dim rs as ADODB.Record,27,AvtiveConnection,屬性與,Open,方法,Dim Cn as ADODB.Connection,Dim Rs as ADODB.Recordset,Set Cn=New ADODB.Connection,Cn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.3.51;”_,&“DATA Source=c:vb6dbbook.mdb”,Cn.open,Set Rs=New ADODB.Recordset,Rs.Source=“,書籍”,Rs.ActiveConnection=Cn,Rs.open,AvtiveConnection屬性與Open方法Dim C,28,關閉資料表,使用,Close,方法,Rs.Close,不過如此只是將佔用的系統資源釋放,記憶體
展开阅读全文