

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、14.1開放式數據庫連接(ODBC) ODBC(Open Database Connectivity)是由Microsoft 開發(fā)和定義的一種訪問數據庫的應用程序接口,是一組用于訪問不同構造的數據庫的驅動程序,在數據庫應用程序中,不需要考慮各類數據庫的系統的構造細節(jié),只要使用ODBC提供的驅動程序,通過將SQL語句發(fā)送到目標數據庫中,就可以存取各類數據庫中的數據。,,14.1開放式數據庫連接(ODBC),1. ODBC組件
2、ODBC使用的分層體系結構包括:ODBC應用程序、驅動程序管理器、ODBC驅動程序和數據源。其結構課本所示。2.配置ODBC數據源 在使用ODBC之前,必須安裝一個ODBC驅動程序,然后再配置一個數據源。數據庫驅動程序使用Data Source Name (DSN)來定位特定的ODBC兼容數據庫,將信息從應用程序傳遞給數據庫。典型情況下,DSN通常包含數據庫配置、用戶安全性和定位信息,并且可以獲取Windows NT注冊表項中
3、或文本文件的表格。 (1) ODBC數據源名 數據源名是為所要訪問數據庫指定的名字。通常情況下,如果要連接到一個數據庫上,則必須發(fā)送一組參數來獲得該連接。在每次要連接一個數據庫時,反復地發(fā)送這些信息很麻煩,因為這些信息是永遠不改變的。,14.1開放式數據庫連接(ODBC),( 2) SQL Server數據庫系統DSN的配置方法下面通過一個實例,具體說明DSN的配置方法。【例14-1】建立一個名稱為studentDBS的
4、數據源,通過該數據源名稱引用student_ms數據庫。(1)在計算機中,通過“開始”→“控制面板”→“管理工具”→“數據源( ODBC)”命令,打開ODBC數據源管理器。在該數據源管理器中選擇“系統DSN”標簽頁,如圖所示。,14.1開放式數據庫連接(ODBC),(2)單擊“添加”按鈕,打開“創(chuàng)建新數據源”對話框,在“選擇您想為其安裝數據源的驅動程序”的列表框中,顯示系統中全部ODBC驅動程序,選擇“SQL Server"
5、,如圖所示。,14.1開放式數據庫連接(ODBC),(3)單擊“完成”按鈕,系統自動彈出如下圖所示的“創(chuàng)建到SQL Server的新數據源”設置界面,在數據源名稱文本欄中輸入內容:,14.1開放式數據庫連接(ODBC),(4)單擊“下一步”按鈕, SQL Server將確定應該如何驗證登錄ID的真?zhèn)?。選擇“使用網絡登錄ID的Windows NT驗證”這種驗證方式。如圖所示,可以根據需要選擇不同的選項。,14.1開放式數據庫連接(ODBC
6、),(5)單擊“下一步”按鈕,SQL Server將確定默認的數據庫等,如圖所示。在該對話框中,可根據需要更改默認數據庫的名稱,這里輸入“student _ms”,也可以添加“附加數據庫文件名”等。,14.1開放式數據庫連接(ODBC),(6)單擊“下一步”按鈕,出現對新數據源進行簡單設置的對話框,如圖所示。,14.1開放式數據庫連接(ODBC),(7)單擊“完成”按鈕,系統將會顯示新創(chuàng)建的ODBC數據源的配置情況的描述,如圖所示。,1
7、4.1開放式數據庫連接(ODBC),(8)單擊“測試數據源”按鈕,如果DSN創(chuàng)建成功,則“SQL Server ODBC 數據源測試”對話框將會顯示測試成功的消息,如圖所示。,14.1開放式數據庫連接(ODBC),(9)單擊“確定”按鈕,完成配置SQL Serve:數據源的操作。返回到“系統DSN”標簽頁中,則會看到剛剛建立好的數據源。注意:在配置ODBC數據源以前,請確定數據庫已建立完成,如果是配置SQL Server數據源,還得確
8、定SQL Server處于運行狀態(tài)。,14. 2使用ADO操作數據庫中的數據,14.2.1 ActiveX數據對象(ADO ) ADO包括Command,Connection等七個對象和一個動態(tài)的Properties集合,絕大部分的數據庫訪問任務都可以通過它們的組合來完成。ADO具體的七個對象為:●Command:定義對數據源進行操作的命令;● Connection:建立一個數據源的連接;● Error:提供數據訪問錯誤的
9、細節(jié);● Field:表示一般數據類型的字段;● Parameter:表示Command對象的參數;● Property:表示由數據源定義ADO對象的動態(tài)特性;● Recordset:數據庫命令結果集對象。,14. 2使用ADO操作數據庫中的數據,通過ADO訪問數據庫通常經過下列步驟。 ①創(chuàng)建數據庫源名,即創(chuàng)建和配置ODBC數據源。 ②創(chuàng)建數據庫鏈接 如果要訪問數據,必須首先創(chuàng)建與數據庫的鏈接,其語法如下:
10、Set Conn=Server CreateObject ("ADOBD. CONNECTION") 這條語句創(chuàng)建了鏈接對象Conn,然后打開該連接,其語法格式為: Conn. Open "dsn_name',"username'","password" 其中該連接的DSN名為“dsn_ name",”username”、“p
11、assword”分別表示訪問數據庫的用戶名和口令,為可選參數。在這里我們主要介紹Connection對象、Command對象和Recordset對象。,14. 2使用ADO操作數據庫中的數據,14.2.2 Connection對象 Connection 對象表示數據源的唯一會話。在使用客戶端/服務器數據庫系統的情況下,該對象可以等價于到服務器的實際網絡連接。Connection 對象的某些集合、方法或屬性可能無效,這取決于提供
12、者支持的功能。 使用Connection對象的集合、方法和屬性可以執(zhí)行下列操作: (1)在打開連接前使用ConnectionString,ConnectionTimeout和Mode屬性對連接進行配置。 (2)使用DefaultDatabase屬性設置連接的默認數據庫。 (3)使用IsolationLevel屬性為在連接上打開的事務設置隔離級別。 (4)使用Provider屬性指定OLE DB提供者。 (5)
13、Open方法建立到數據源的物理連接。使用Close方法將其切斷。,,14. 2使用ADO操作數據庫中的數據,(6)Execute方法執(zhí)行對連接的命令,并使用CommandTimeout屬性對執(zhí)行進行配置。(7)可使用BeginTrans,CommitTrans和RollbackTrans方法以及Attributes屬性管理打開的連接上的事務(如果提供者支持則包括嵌套的事務)。(8)使用Errors集合檢查數據源返回的錯誤。(9)通
14、過Version屬性讀取所使用的ADO執(zhí)行版本。(10)使用OpenSchema方法獲取數據庫綱要信息。 ADO連接數據庫的兩種方式。 (1)通過數據源名稱(DSN)建立連接 先設置好DSN后,通過ADO的Connection對象實現數據庫的連接。其語法格式如下: ConnectionString="DSN=數據源名稱;UID=用戶名;PWD=口令”,,14. 2使用ADO操作數據庫
15、中的數據,(2)直接使用數據庫文件名稱或數據源名稱建立連接 直接使用數據庫的文件名(比如Access,Paradox或FoxPro的數據庫文件)或者SQLServer的數據庫,也可建立數據庫的連接。其語法格式如下: Connectionstring=“Provide=提供者名稱;DSN=數據源名稱;DRIVER=驅動程序名稱;SERVER=服務器名稱;DATABASE=數據庫名稱;UID=用戶名;PWD=口令”1.Conne
16、ction對象的屬性Connection對象的屬性如下:(1) Connection String屬性 該屬性是一個字符串。包含用來建立到數據源的連接的信息。ADO支持的4個參數如下:●Providr:指定連接所用的供應器的名稱。,14. 2使用ADO操作數據庫中的數據,● File Name:指定包含預設連接信息的特定供應器的文件名。● Remote Provider:指定打開客戶端連接(只適用于遠程數據服務)時使用的供應器
17、的名稱?!?Remote Serve:指定打開客戶端連接(只適用于遠程數據服務)時使用的服務器的路徑名。(2)CommandTimeout屬性 該屬性是一個Long型數據值。指示在終止嘗試和產生錯誤之前執(zhí)行命令期間需等待的秒數。默認值為30秒。,14. 2使用ADO操作數據庫中的數據,(3)Attributes 屬性 該屬性是一個Long型數據值。設置或返回Connection對象的特性。并非所有的數據提供者都支持這種屬性。
18、它可取兩個值:●AdXactCommitRetaining:執(zhí)行保留的提交,即通過自動調用CommitTrans啟動新事務。并非所有的數據提供者都支持這種屬性?!?AdXactCommitRetaining:執(zhí)行保留的終止,即通過自動調用RollbackTrans啟動新事務。并非所有的數據提供者都支持這種屬性。(4) DefaultDatabase屬性該屬性是一個字符串。包含Connection對象的默認數據庫名稱。,14. 2
19、使用ADO操作數據庫中的數據,(5) CursorLocation屬性 該屬性是一個Long型數據值。包含光標服務程序的默認位置。這個值將由使用該Connection對象的Recordset對象自動繼承。 (6) ConnectionTimeout屬性 該屬性是一個Long型數據值。指示在終止嘗試和產生錯誤前建立連接期間所等待的秒數。默認值為30秒。 (7)Mode屬性 該屬性是一個Long型數據值。指示可以
20、獲得的數據修改權限。 (8) Provider屬性 指示Connection對象提供者的名稱。(9)State屬性 該屬性是一個Long型數據值。說明Connection對象的當前狀態(tài)。(10)Version屬性 該屬性是一個字符串。包含ADO目前的版本號。,14. 2使用ADO操作數據庫中的數據,2. Connection 對象的方法 (1)BeginTrans,CommitTrans,Rollback
21、Trans方法 BeginTrans方法啟動新事物,即表示一個操作的開始。 CommitTrans方法保存所有更改并結束當前事務。 RollbackTrans方法取消當前事務中所做的任何更改并結束事務。其語法格式如下: ● level=Connection對象.BeginTrans() ● Connection對象.BeginTrans ● Connection對象.Commit
22、Trans ● Connection對象.RollbackTrans (2) Cancel方法 該方法終止一項由Execute或Open方法啟動的異步任務。,14. 2使用ADO操作數據庫中的數據,(3) Close方法 該方法用于關閉與數據提供者之間的連接。也可用于關閉任何處于打開狀態(tài)的Recordset對象,并可以把任意一個Command對象的ActiveConnection屬性設置成Nothing。(4)Ex
23、ecute方法 該方法執(zhí)行指定的命令。返回一個Recordset對象。其語法格式如下: 對于不按行返回的命令字符串: Connection對象.Execute CommandText,RecordsAffected,Options 對于按行返回的命令字符串: Set Recordset=Connection對象.Execute (CommandText,RecordsAffected,Option
24、s) (5) Open方法 該方法打開到數據源的連接。其語法格式如下: Connection對象.Open ConnectionString,UserID,Password,Options,14. 2使用ADO操作數據庫中的數據,(6) OpenSchema方法 該方法從數據提供者處返回數據庫信息。其語法格式如下: Set Recordset=Connection對象.OpenSchema(QueryT
25、ype,Criteria,SchemaID)3.Connection對象的事件Connection對象的事件如下。(1)BeginTransComplete事件該事件在BeginTrans方法已經以異步方式運行完成時被觸發(fā)執(zhí)行。(2) CommitTransComplete事件該事件在CommitTrans方法己經以異步方式運行完成時被觸發(fā)執(zhí)行。(3) ConnectComplete事件該事件在連接開始后被觸發(fā)執(zhí)行。(
26、4) Disconnect事件該事件在連接結束后被觸發(fā)執(zhí)行。,,(5)ExecuteComplete事件該事件在Execute方法已經以異步方式運行完成時被觸發(fā)執(zhí)行。(6) InfoMessage事件該事件在當前連接收到警告信息時被觸發(fā)執(zhí)行。(7)RollbackTransComplete事件該事件在RollbackTrans方法己經以異步方式運行完成時被觸發(fā)執(zhí)行。(8) Wi1lConnect事件該事件在連接啟動前被觸
27、發(fā)執(zhí)行。(9) Wi1lExecute事件該事件在命令被執(zhí)行前被觸發(fā)執(zhí)行。14.2.3 Command對象 Command對象用于向已建立的連接發(fā)出一條命令,通常是SQL語句,或者是數據庫存儲過程。雖然Connection對象己經有Execute方法可以用于運行SQL語句,但是Command對象提供了更專門的運行方式和參數傳遞。,14. 2使用ADO操作數據庫中的數據,,14. 2使用ADO操作數據庫中的數據,1.Comm
28、and對象的屬性Command對象的屬性如下。 (1)ActiveConnection屬性該屬性是一個指示指定的Command對象當前所屬的Connection對象。(2) CommandText屬性該屬性是一個String型值。包含SQL語句、存儲過程或其他將被執(zhí)行的提供者命令。 (3) CommandTimeout屬性該屬性是一個Long型數值。指示在終止嘗試和產生錯誤之前執(zhí)行命令期間需等待的時間(單位為秒)。默認值為
29、30秒。(4) CommandType屬性該屬性是一個枚舉型數值,,,(5) Name屬性 該屬性是一個String型數據,指出對象的名稱。 (6) Parameters屬性 該屬性是Parameters集合的一個應用對象。包含要傳遞給一個存儲過程或一個參數化查詢的參數。 (7) Prepared屬性 該屬性是一個布爾型數值。當取True時,表示命令執(zhí)行之前將被優(yōu)化。 (8) Properties屬性 該屬
30、性是Properties集合的一個引用對象,包含關于Command對象的附加信息。 (9) State屬性 該屬性是一個Long型數值。指出Command對象的當前狀態(tài)。,14. 2使用ADO操作數據庫中的數據,,2.Command對象的方法 Command對象的方法如下。 (1)Cancel方法 (2) CreateParameter方法 (3)Execute方法3.Parameters集合和Pa
31、rameter對象 (1)Parameters集合 Parameters集合用在Command對象中,其作用是傳遞執(zhí)行CommandText命令所需要的參數。其主要屬性如下。 ● Count屬性 ● Item屬性 ● Append方法 ● Delete方法 ● Refresh方法,14. 2使用ADO操作數據庫中的數據,,(2) Parameter對象一個Parameter對象是Paramet
32、ers集合中的一個成員,其常用的屬性如下: ● Name屬性 ● Type屬性 ● Direction屬性 ● Size屬性 ● Value屬性14.2.4 Recordset 對象 在ADO的所有對象中,Recordset對象是使用最多的,它包含某個SQL查詢返回的數據庫記錄集,以及記錄集中的游標(Cursor),Recordset對象是一個跟數據庫中的表相對應的結構,也可以理解成具有字段(Fields)
33、和字段值(Value)的對象,在這些記錄中可以向前一條或向后一條移動。,14. 2使用ADO操作數據庫中的數據,,1.Recordset對象的屬性 (1)AbsolutePage屬性 (2) AbsolutePosition屬性 (3) ActiveCommand屬性 (4) ActiveConnection屬性 (5) BOF和EOF屬性 ……2.Recordset對象的方法Recordset對象的方法如
34、下。 (1) AddNew方法 (2)Cancel方法 (3)CancelBatch方法 ( 4 ) CancelUpdate方法 (5)Clone方法 ……,14. 2使用ADO操作數據庫中的數據,,3.Recordset對象的事件 (1)EndOfRecordset事件 (2) FetchComplete事件 (3) FetchProgress事件 (4) FieldChangeComplete
35、事件 (5)MoveComplete事件 ……,14. 2使用ADO操作數據庫中的數據,,ADO .NET由Microsoft ActiveX Data Objects (ADO)改進而來,它提供平臺互用和可收縮的數據訪問功能。它雖然始于ADO,是一個改進了的ADO的新版本,但ADO. NET最終演變成了一個和ADO非常不同的技術。ADO. NET的應用重點是Internet和基于Web的應用程序??梢詫DO. NET對
36、象模型劃分為兩個組件:DataSet和數據提供程序。DataSet是一個特殊的對象,它包含有一個或者多個表。數據提供程序則是由Connection、Command、DataReader和DataAdapter組合而成的。,14.3 ADO.NET,,ADO.NET數據對象如下: (1) Command對象 用于定義要在DBMS上執(zhí)行的操作,如添加、刪除或者更新一條記錄。在通常情況下,并不需要使用ADO. NET創(chuàng)建一個Co
37、mmand對象,除非需要完成特殊的工作。在DataAdapter對象中,已經包含了查詢、刪除、插入和編輯記錄所需的Command對象。 (2) Connection對象 在DBMS和DataAdapter對象之間直接創(chuàng)建物理連接。Connection對象是數據提供程序的具體體現。它也包含有用于優(yōu)化分布式應用程序環(huán)境下的連接的邏輯。(3) DataAdapter對象 將DBMS中的原始數據轉換為DataSet可以接受的
38、形式。DataAdapter完成所有的查詢,將數據從一種格式轉換為另外一種格式,它甚至可以完成表的映射。,14.3 ADO.NET,精品課件!,精品課件!,,一個DataAdapter可以管理一個數據庫關系。它的結果集可以具有任意級別的復雜性,但必須是單個的結果集。DataAdapter也負責發(fā)送要求建立新連接的請求,并在獲取數據之后終止連接。 (4) DataReader對象提供到數據庫的活動連接。但是,它只提供了讀取數據庫的方
39、法。此外,DataReader的游標只能向前移動。如果你需要對本地表進行快速地檢索,而不需要完成任何的更新操作,那么就應當使用這個對象。DataReader會阻塞DataAdapter,以及相關的連接對象,所以,在用完DataReade:對象之后立即將其關閉是非常重要的。 (5) DataSet對象該對象是ADO.NET的核心,可以認為它是位于內存的數據庫,它包含檢索自一個或者多個DataAdapter的數據的本地備份。由于Data
40、Set使用數據的本地備份,所以它到數據庫的連接不是活動的。用戶對數據庫的本地備份進行所有的修改,然后應用程序會發(fā)出一個更新請求(可以以批處理模式進行更新,或者也可以按照一次一條記錄的方式進行更新)。DataSet會同時保留有關每個修改過的行的原始數據和當前狀態(tài)的信息。如果它所保留的行的原始數據與數據庫中該行的數據相匹配,DataAdapter就會按照要求進行更新。否則,DataAdapter就會返回一個錯誤,應用程序必須對這個錯誤進行處
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論