數據庫開發(fā)技術期末復習總結資料_第1頁
數據庫開發(fā)技術期末復習總結資料_第2頁
數據庫開發(fā)技術期末復習總結資料_第3頁
數據庫開發(fā)技術期末復習總結資料_第4頁
數據庫開發(fā)技術期末復習總結資料_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數據庫應用開發(fā)技術1、什么是數據庫應用體系結構? 數據庫應用系統(tǒng)體系結構概述: 數據庫應用系統(tǒng)體系結構是指數據庫系統(tǒng)中數據存儲層、業(yè)務處理層、界面表示層以及網絡通信之間的布局與分布關系。數據庫應用系統(tǒng)體系結構的三個層次:數據庫存儲層:完成對數據庫中數據的各種維護操作。業(yè)務處理層:又稱為應用層或業(yè)務邏輯層,此即是數據庫應用將要處理的與用戶緊密相關的各種業(yè)務操作。界面表示層:也稱為用戶界面層,主要完成輸入輸出數據及與用戶進行交互的功能。 三級模式結構2、 C/S結構的基本概念 C/S(client/server)結構即通常所稱的客戶機/服務器結構,是當今世界最為流行的一種數據庫應用系統(tǒng)結構。在這種

2、體系結構中,根據功能把數據庫應用分為客戶機應用與服務器應用兩大部分,由客戶機向服務器提出請求,服務器對客戶機的請求做出回應。有效的實現服務、數據的共享以及應用的分布。C/S結構一般又根據應用功能的層次劃分分為:兩層、三層及多層結構。3、C/S結構的組成 從用戶的角度看,C/S結構基本由三個部分組成:客戶機、服務器、客戶機與服務器之間的連接件。 客戶機:面向最終用戶的接口或應用程序 服務器:監(jiān)聽客戶機調用、處理客戶機請求、存儲及維護數據 連接件:管理及維持客戶機與服務器的連接,完成數據交換及命令通訊、提供中間接口及標準4、C/S結構分為三類: 服務器業(yè)務邏輯結構:客戶機主要負責用戶接口及基本數據

3、驗證,大部分業(yè)務邏輯及數據存儲維護均由服務器完成; 均衡負載結構:用戶接口由客戶機完成,數據存儲維護由服務器完成,而業(yè)務邏輯根據情況均衡分布在客戶機和服務器上; 客戶機業(yè)務邏輯結構(強客戶機結構):服務器提供數據服務,業(yè)務邏輯及用戶接口均由客戶機完成。 5、C/S結構的優(yōu)點:降低了工作站性能需求、減少工作站網絡負載、數據庫易于維護。6、C/S結構的缺點:增加了維護數據庫服務器的管理和支持人員的開銷;增加了硬件的開銷;增加數據庫軟件費用;客戶端開發(fā)困難;復雜性;系統(tǒng)維護困難。7、C/S結構的DBMS功能劃分 C/S體系結構,RU(RADUnify)體系結構,EWS(Extended Workst

4、ation Server)體系結構8、B/S結構的基本概念 B/S結構,即Browser/Server(瀏覽器/服務器)結構,是隨著Internet技術的興起,對C/S結構的一種變化或者改進的結構。在這種結構下,用戶界面完全通過WWW瀏覽器實現,一部分事務邏輯在前端實現,但是主要事務邏輯在服務器端實現,形成所謂3-tier結構。B/S結構,主要是利用了不斷成熟的WWW瀏覽器技術,結合瀏覽器的多種Script語言(VBScript、JavaScript)和ActiveX技術,用通用瀏覽器就實現了原來需要復雜專用軟件才能實現的強大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構造技術。隨著Windo

5、ws 98/Windows 2000將瀏覽器技術植入操作系統(tǒng)內部,這種結構更成為當今應用軟件的首選體系結構。 9、B/S結構的優(yōu)點:降低開發(fā)成本及開發(fā)復雜度;系統(tǒng)易于維護;系統(tǒng)易于管理;易于推廣使用 10、B/S結構與C/S結構的比較n 硬件環(huán)境不同n 安全要求不同n 對程序架構不同n 軟件重用不同n 系統(tǒng)維護不同n 處理問題不同n 用戶接口不同n 信息流不同11、PowerDesigner的模型文件:概念數據模型 (CDM) ,物理數據模型 (PDM) ,業(yè)務程序模型 (BPM),面向對象模型 (OOM) ,需求模型(RQM),信息流模型(ILM)12、什么是CDM?o CDM 表現數據庫的

6、全部邏輯的結構,與任何的軟件或數據存儲結構無關。 一個概念模型經常包括在物理數據庫中仍然不實現的數據對象。 它給運行計劃或業(yè)務活動的數據一個正式表現方式。o CDM是一組嚴格定義的模型元素的集合,這些模型元素精確地描述了系統(tǒng)的靜態(tài)特性、動態(tài)特性以及完整性約束條件等13、關于聯(lián)系:o 聯(lián)系(Relationship)是指實體集之間或實體集內部實例之間的連接。o 按照實體類型中實例之間的數量對應關系,通??蓪⒙?lián)系分為4類,即一對一(ONETOONE)聯(lián)系、一對多(ONETOMANY)聯(lián)系、多對一(MANYTOONE)聯(lián)系和多對多聯(lián)系(MANYTOMANY)。14、聯(lián)系的類型:標定聯(lián)系 ,遞歸聯(lián)系。

7、15、什么是PDM?o PDM定義了模型的物理實現細節(jié)。16、CDM PDM OOM三者的轉換關系:17、從CDM生成PDM的對象規(guī)則:CDM對象 在PDM中生成的對象 備注 實體(Entity) 表(Table) 實體屬性(Entity Attribute) 列Table Column) 主標識符(Primary Identifier) 根據是否為依賴關系確定是主鍵或外鍵 標識符(Identifier) 候選鍵(Alternate key) 關系(Relationship) 引用(Reference) 18、關系鍵的確定在PDM中生成的鍵類型取決于CDM中用于定義一個關系(Relations

8、hip)的基數和依賴類型。 依賴性一對多關系;非依賴性多對多關系;非依賴性一對一關系;非依賴性一對多關系19、數據模型概述:數據模型是用于描述數據或信息的標記。(數據結構、數據操作、數據上的約束)20、常用的數據模型:關系模型、層次模型、網狀模型、面向對象的數據模型。21、在SQL中定義關系模式:Create table/ Create View22、關系數據庫模式設計三、SQL語言強化訓練與T-SQL第一節(jié)、SQL語言及其基本結構1、SQL的概念及作用:一種介于關系代數與關系演算之間的語言,成為關系數據庫的標準語言。功能:查詢、定義、操作、控制。2、SQL指令構成;3、標準SQL與個性化SQ

9、L;第二節(jié)、SELECT訓練1、單表查詢查詢出至少選修了4門課程的學號和門數SELECT Sno,COUNT(Sno) FROM Sc GROUP BY Sno HAVING COUNT(Sno)>=4求選課在4門以上的平均成績,不統(tǒng)計不及格的課程,按降序排列總成績SELECT Sno,AVG(G) Average FROM Sc WHERE G>=60 GROUP BY Sno HAVING COUNT(*)>=4 ORDER BY Average DESCENDINGSELECT Sno,AVG(G) FROM Sc WHERE G>=60 GROUP BY Sno

10、 HAVING COUNT(*)>=4 ORDER BY 2 DESCENDING 2、庫函數(集函數)查詢o 求計算機系學生的平均年齡SELECT AVG(Age) FROM Student WHERE Dept='CS'o 求S3學生的總分和平均分SELECT SUM(G),AVG(G) FROM Sc WHERE Sno='S3'o 求計算機系的學生總數SELECT COUNT(Sno) FROM Student WHERE Dept='CS'SELECT COUNT(*) FROM Student WHERE Dept='C

11、S'o 查詢共有幾個系SELECT COUNT (*) FROM Student ?SELECT COUNT (Dept) FROM Student ?SELECT COUNT (DISTINCT Dept) FROM Studento 求課程C1的最高分和最低分以及高低分之間的差距SELECT MAX(G),MIN(G),MAX(G)-MIN(G) FROM Sc WHERE Cno=C1 3、連表查詢o 復合條件連接n 查詢“張三”的成績SELECT Cno,G FROM Student,Sc WHERE Student.Sno=Sc.Sno AND Sn=張三 n 查詢所有學生(

12、姓名)選修的課程名和成績SELECT Sn,Cn,G FROM Student,Course,Sc WHERE Student.Sno=Sc.Sno AND Course.Cno=Sc.Cno 4、子查詢塊嵌套查詢5、并交差集合查詢6、數據庫的更新n INSERT INTO R(A1,.An)VALUES(v1,v2.vn)例6.35: 把 Sydney Greenstreet 添加到演員列表中去。Insert into starsIn(movieTitle,movieYear,starName) Values(The Maltese Falcon,1942,Sydeny Greenstree

13、t);Insert into starsIn Values(The Maltese Falcon,1942,Sydeny Greenstreet);Example 6.35:往關系Studio(name,address,presC#)添加在關系 Movie(title,year,length,inColor,studioName,producerC#)提到的但沒有在studio中出現過的所有電影公司。Insert into studio(name) select distinct studioName from Movie where studioName not in (select nam

14、e from studio);n DELETE FROM R WHERE <condition>例6.37: 從關系StarsIn(movieTitle,movieYear,starName)刪除 Sydney Greenstreet出演電影n The Malese Falcon 這一事實。 delete from starsIn where movieTitle=The maltese Falcon and movieYear=1942 and starName=Sydney Greenstreet;n Update R SET <new-value assignments

15、> Where <condition>每個新值賦值由一個屬性、一個等號和一個表達式組成。例6.39 修改關系MovieExec(name,address ,cert#,netWorth),在每個電影公司制片經理的電影制片人名字前加上稱呼Pres.。Update movieExec SET name=Pres. |name Where cert# IN (select presC# from studio);第三節(jié)、Transact-SQL 概述 2、Transact-SQL應用基礎:游標關系數據庫中的操作會對整個行集產生影響。由 SELECT 語句返回的行集包括所有滿足該語句

16、 WHERE 子句中條件的行。由語句所返回的這一完整的行集被稱為結果集。應用程序,特別是交互式聯(lián)機應用程序,并不總能將整個結果集作為一個單元來有效地處理。這些應用程序需要一種機制以便每次處理一行或一部分行。游標就是提供這種機制的結果集擴展。 Transact-SQL 游標主要用在存儲過程、觸發(fā)器和 Transact-SQL 腳本中,它們使結果集的內容對其它 Transact-SQL 語句同樣可用。 3、Transact-SQL應用:游標進程在存儲過程或觸發(fā)器中使用 Transact-SQL 游標的典型進程為: o 聲明 Transact-SQL 變量包含游標返回的數據。為每一結果集列聲明一個變

17、量。聲明足夠大的變量以保存由列返回的值,并聲明可從列數據類型以隱性方式轉換得到的數據類型。o 使用 DECLARE CURSOR 語句把 Transact-SQL 游標與一個 SELECT 語句相關聯(lián)。DECLARE CURSOR 語句同時定義游標的特征,比如游標名稱以及游標是否為只讀或只進特性。o 使用 OPEN 語句執(zhí)行 SELECT 語句并生成游標。o 使用 FETCH INTO 語句提取單個行,并把每列中的數據轉移到指定的變量中。然后,其它 Transact-SQL 語句可以引用這些變量來訪問已提取的數據值。Transact-SQL 不支持提取行塊。o 結束游標時,使用 CLOSE 語

18、句。關閉游標可以釋放某些資源,比如游標結果集和對當前行的鎖定,但是如果重新發(fā)出一個 OPEN 語句,則該游標結構仍可用于處理。由于游標仍然存在,此時還不能重新使用游標的名稱。DEALLOCATE 語句則完全釋放分配給游標的資源,包括游標名稱。在游標被釋放后,必須使用 DECLARE 語句來重新生成游標。4、兩種方法定義使用游標變量 5、游標的提取和滾動6、打開或關閉游標打開游標:OPEN GLOBAL cursor_name | cursor_variable_name 關閉游標:CLOSE GLOBAL cursor_name | cursor_variable_name 刪除游標引用:DE

19、ALLOCATE GLOBAL cursor_name | cursor_variable_name 7、游標示例(1)下面的示例打開一個游標并且提取所有的行。DECLARE Employee_Cursor CURSOR FOR SELECT LastName, FirstName FROM Northwind.dbo.Employees WHERE LastName like 'B%' OPEN Employee_Cursor FETCH NEXT FROM Employee_Cursor WHILE FETCH_STATUS = 0 BEGIN FETCH NEXT FRO

20、M Employee_Cursor END CLOSE Employee_Cursor DEALLOCATE Employee_Cursor (2) DECLARE au_lname varchar(40), au_fname varchar(20) DECLARE authors_cursor CURSOR FOR SELECT au_lname, au_fname FROM authors WHERE au_lname LIKE "B%" ORDER BY au_lname, au_fname OPEN authors_cursor FETCH NEXT FROM au

21、thors_cursor INTO au_lname, au_fname WHILE FETCH_STATUS = 0 BEGIN PRINT "Author: " + au_fname + " " + au_lname FETCH NEXT FROM authors_cursor INTO au_lname, au_fname END CLOSE authors_cursor DEALLOCATE authors_cursor 第四節(jié)、存儲過程1、存儲過程的概念:是一組為了完成特定功能的SQL 語句集,經編譯后存儲在數據庫。用戶通過指定存儲過程的名字并

22、給出參數(如果該存儲過程帶有參數)來執(zhí)行它。(在SQL Server 的系列版本中存儲過程分為兩類:系統(tǒng)提供的存儲過程和用戶自定義存儲過程。系統(tǒng)過程主要存儲在master 數據庫中并以sp_為前綴,并且系統(tǒng)存儲過程主要是從系統(tǒng)表中獲取信息,從而為系統(tǒng)管理員管理SQL Server 提供支持。通過系統(tǒng)存儲過程,MS SQL Server 中的許多管理性或信息性的活動(如了解數據庫對象、數據庫信息)都可以被順利有效地完成。盡管這些系統(tǒng)存儲過程被放在master 數據庫中,但是仍可以在其它數據庫中對其進行調用,在調用時不必在存儲過程名前加上數據庫名。而且當創(chuàng)建一個新數據庫時,一些系統(tǒng)存儲過程會在新數

23、據庫中被自動創(chuàng)建。用戶自定義存儲過程是由用戶創(chuàng)建并能完成某一特定功能(如查詢用戶所需數據信息)的存儲過程。) 2、用CREATE PROCEDURE 命令創(chuàng)建存儲過程o 用Create Procedure 創(chuàng)建存儲過程的語法規(guī)則如下:CREATE PROC EDURE procedure_name ; number parameter data_type VARYING = default OUTPUT ,.n WITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION FOR REPLICATION AS sql_statement .n 3、C

24、REATE PROCEDURE 命令參數略解o procedure_name 是要創(chuàng)建的存儲過程的名字。 o parameter 是存儲過程的參數。當調用該存儲過程時,用戶必須給出所有的參數值,除非定義了參數的缺省值。一個存儲過程至多有1024 個參數。 o Data_type 是參數的數據類型。 o OUTPUT表明該參數是一個返回參數。用OUTPUT 參數可以向調用者返回信息。Text 類型參數不能用作OUTPUT 參數。o RECOMPILE指明SQL Server 并不保存該存儲過程的執(zhí)行計劃,該存儲過程每執(zhí)行一次都又要重新編譯。o ENCRYPTION加密。o AS指明該存儲過程將要

25、執(zhí)行的動作。o Sql_statement是任何數量和類型的包含在存儲過程中的SQL 語句。 4、存儲過程示例o (一)使用帶有復雜 SELECT 語句的簡單過程 USE pubs IF EXISTS (SELECT name FROM sysobjects WHERE name = 'au_info_all' AND type = 'P') DROP PROCEDURE au_info_all GO CREATE PROCEDURE au_info_all AS SELECT au_lname, au_fname, title, pub_name FROM a

26、uthors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_id GO o (二)使用帶有參數的簡單過程 USE pubs IF EXISTS (SELECT name FROM sysobjects WHERE name = 'au_info' AND type = 'P') DROP PROCEDURE au_info GO

27、 CREATE PROCEDURE au_info lastname varchar(40), firstname varchar(20) AS SELECT au_lname, au_fname, title, pub_name FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_id WHERE au_fname = firstname

28、 AND au_lname = lastname GO o (三)使用 OUTPUT 參數 USE pubs GO IF EXISTS(SELECT name FROM sysobjects WHERE name = 'titles_sum' AND type = 'P') DROP PROCEDURE titles_sum GO CREATE PROCEDURE titles_sum TITLE varchar(40) = '%', SUM money OUTPUT AS SELECT 'Title Name' = title

29、FROM titles WHERE title LIKE TITLE SELECT SUM = SUM(price) FROM titles WHERE title LIKE TITLE GO o (四)使用 OUTPUT 游標參數 USE pubs IF EXISTS (SELECT name FROM sysobjects WHERE name = 'titles_cursor' and type = 'P') DROP PROCEDURE titles_cursor GO CREATE PROCEDURE titles_cursor titles_curs

30、or CURSOR VARYING OUTPUT AS SET titles_cursor = CURSOR FORWARD_ONLY STATIC FOR SELECT * FROM titles OPEN titles_cursor GO 5、管理存儲過程(1)查看存儲過程 o 通過Enterprise Manager 管理工具同樣可以查看存儲過程的源代碼 o 使用sp_helptext 存儲過程查看存儲過程的源代碼,其語法格式為:sp_helptext 存儲過程名稱(2)重新命名存儲過程 o 修改存儲過程的名字使用系統(tǒng)存儲過程sp_rename。 其命令格式為:sp_rename 原存儲

31、過程名, 新存儲過程名(3) 刪除存儲過程 o 刪除存儲過程使用drop 命令,drop 命令可將一個或多個存儲過程或者存儲過程組從當前數據庫中刪除。其語法規(guī)則為: DROP PROCEDURE procedure ,n(4)執(zhí)行存儲過程 執(zhí)行已創(chuàng)建的存儲過程使用EXECUTE |EXEC命令6、Transact-SQL控制流語言關鍵字 描述 BEGIN.END 定義語句塊。 BREAK 退出最內層的 WHILE 循環(huán)。 CONTINUE 重新開始 WHILE 循環(huán)。 GOTO label 從 label 所定義的 label 之后的語句處繼續(xù)進行處理。 IF.ELSE 定義條件以及當一個條件

32、為 FALSE 時的操作。 RETURN 無條件退出。 WAITFOR 為語句的執(zhí)行設置延遲。 WHILE 當特定條件為 TRUE 時重復語句。7、Transact-SQL事務控制o BEGIN TRANSACTION標記一個顯式本地事務的起始點。 o COMMIT TRANSACTION標志一個成功的隱性事務或用戶定義事務的結束。o ROLLBACK TRANSACTION將顯式事務或隱性事務回滾到事務的起點或事務內的某個保存點。6.3.1 可串行化如果完全不約束DBMS對數據庫進行操作的順序,那么可能出現錯誤。例6.40 顧客選擇航班座位Flights(fltNo,fltDate,seat

33、No,seatStatus)select seatNo from flights where fltNo=123 and fltDate=2008-12-25 and seatNo=22A;update flights set seatStatus=Occupied where fltNo=123 and fltDate=2008-12-25 and seatNo=22A;四、客戶端開發(fā)技術及工具第一節(jié) ODBC應用與開發(fā)1、什么是ODBC? ODBC(Open Database Connectivity,開放數據庫互連)是微軟公司開放服務結構中有關數據庫的一個組成部分,它

34、建立了一組規(guī)范,并提供了一組對數據庫訪問的標準API(Application Programming Interface,應用程序編程接口)。這些API利用SQL來完成其大部分任務。ODBC本身也提供了對SQL語言的支持,用戶可以直接將SQL語句送給ODBC。 2、ODBC的體系結構;ODBC的組成結構各層的功能3、應用ODBC的優(yōu)勢(1)應用ODBC保證了數據庫的獨立性 (2)應用ODBC保證了數據庫之間的互操作能力 4、ODBC操縱第二節(jié) ADO應用與開發(fā)1、什么是ADO?l ADO,即ActiveX Data Objects,是一種應用廣泛的數據庫訪問技術,它基于OLEDB技術,是對OL

35、EDB面向對象的封裝。l OLEDB與ODBC相比,在底層的數據庫引擎和每一個獨立的數據庫引擎之間的接口存在著較大的不同。在ODBC中,每一種類型的數據庫都必須有相應的驅動器動態(tài)鏈接庫(DLL),ODBC引擎使用該DLL打開相應類型的數據庫并進行記錄的讀寫修改等操作。OLEDB同樣需要驅動器,但不同的是,OLEDB的驅動器是通過ActiveX實現的。一個ActiveX就定義了用來實現特定接口的類,這種方式減少了程序和數據庫引擎之間的層次,因而提高了數據庫編程的速度。l ADO實際上就是一個ActiveX對象集,封裝了多種對象方法屬性。 2、ADO對象模型及其應用特征l 其中,Connectio

36、n,Command,Recordset和Fields對象還有Properties集合。 l Connection 對象代表打開的、與數據源的連接; l Command 對象定義了將對數據源執(zhí)行的指定命令; l Recordset 對象表示的是來自基本表或命令執(zhí)行結果的記錄全集; l Errors 對象包含與單個操作(涉及提供者)有關的數據訪問錯誤的詳細信息; l Fields 對象代表使用普通數據類型的數據的列的集合; l Parameter 對象代表與基于參數化查詢或存儲過程的 Command 對象相關聯(lián)的參數或自變量; l Property 對象代表由提供者定義的 ADO 對象的動態(tài)特征;

37、 3、Connection對象(1)Connection對象的作用 Connection對象是數據庫與外界溝通的唯一橋梁,所有對數據庫的操作都必須依賴于Connection對象。一個Connection對象代表了一個程序到數據庫的連接。(2)Connection對象的屬性表一Connection對象的屬性 屬性 說明 Attributes 設定Connection對象控制事務處理的特性 CommandTimeout 指示在終止嘗試和產生錯誤之前執(zhí)行命令期間需等待的時間 ConnectionString 包含用于建立連接數據源的信息 ConnectionTimeout 指示在終止嘗試和產生錯誤前

38、建立連接期間所等待的時間 CursorLocation 設置或返回游標服務的位置 DefaultDatabase 可設置或返回指定 Connection 對象上默認數據庫的名稱 IsolationLevel 可設置 Connection 對象的隔離級別 Mode 可設置或返回當前連接上提供者正在使用的訪問權限。Mode 屬性只能在關閉 Connection 對象時方可設置 Provider 可設置或返回連接提供者(OLEDB)的名稱,如果沒有指定提供者,該屬性將默認為 MSDASQL (Microsoft OLE DB Provider for ODBC ) State 說明其對象狀態(tài)是打開或

39、是關閉,可為AdStateClosed或AdStateOpen Version 返回 ADO 執(zhí)行的版本號 (3)表二Connection對象的方法 方法 說明 BeginTrans 開始新事務 CommitTrans 保存任何更改并結束當前事務 RollbackTrans 取消當前事務中所作的任何更改并結束事務 Open 打開到數據源的連接 Close 關閉數據庫連接 Execute 執(zhí)行指定的查詢、SQL 語句、存儲過程或特定提供者的文本等內容 (4)Connection對象應用實例l 定義及實例化 DIM MyConn SET MyConn = Server.CreateObject(A

40、DODB.CONNECTION)l 打開連接 DIM ConnStr ConnStr = “DSN=mydsn;uid=userid;pwd=userpwd” MyConn.ConnectionString = ConnStr IF MyConn.State = AdStateClosed THEN MyConn.Open END IFl 或MyConn.Open ConnStr l 關閉連接 IF MyConn.State = AdStateOpen THEN MyConn.Close END IFl 釋放連接 SET MyConn = nothing(5)使用Connection對象返回記

41、錄集l DIM MyRS l SET MyRS = Server.CreateObject(“ADODB.RECORDSET”)l DIM SelectSQLStr l SelectSQLStr = “select.” l MyRS = MyConn.Execute SelectSQLStr 或MyRS.Open SelectSQLStr, MyConn (6)使用Connection對象進行數據更新l DIM SQLStr l SQLStr = “update” 或SQLStr = “insert into” 或SQLStr = “delete from” l MyConn.BeginTra

42、ns MyConn.Execute SQLStrIF err.number <> 0 THEN MyConn.RollbackTransELSE MyConn.CommitTrans END IF第三節(jié)ADO.NET應用開發(fā)1、ADO.NET簡介l ADO.NET是一組用于和數據源進行交互的面向對象類庫。通常情況下,數據源是數據庫,但它同樣也能夠是文本文件、Excel表格或者XML文件。 l ADO.NET允許和不同類型的數據源以及數據庫進行交互。然而并沒有與此相關的一系列類來完成這樣的工作。因為不同的數據源采用不同的協(xié)議,所以對于不同的數據源必須采用相應的協(xié)議。一些老式的數據源使

43、用ODBC協(xié)議,許多新的數據源使用OleDb協(xié)議,并且現在還不斷出現更多的數據源,這些數據源都可以通過.NET的ADO.NET類庫來進行連接。 l ADO.NET是一種基于標準的程序設計模型,可以用來創(chuàng)建分布式應用以實現數據共享。l 在ADO.NET中,DataSet占據重要地位,它是數據庫里部分數據在內存中的拷貝。與ADO中的RecordSet不同,DataSet可以包括任意個數據表,每個數據表都可以用于表示自某個數據庫表或視圖的數據。DataSet駐留在內存中,且不與原數據庫相連,即無需與原數據庫保持連接。l 完成工作的底層技術是XML,它是DataSet所采用的存儲和傳輸格式。在運行期間

44、,組件(如某個業(yè)務邏輯對象或 web表單)之間需要交換DataSet中的數據。數據以XML文件的形式從一個組件傳輸給另一個組件,由接收組件將文件還原為DataSet形式。DataSet的有關方法與關系數據模型完全一樣。2、ADO.NET包含的對象l SqlConnection 對象 和數據庫交互,你必須連接它。連接幫助指明數據庫服務器、數據庫名字、用戶名、密碼,和連接數據庫所需要的其它參數。connection對象會被command對象使用,這樣就能夠知道是在哪個數據庫上面執(zhí)行命令。 l SqlCommand對象 與數據庫交互的過程意味著你必須指明想要發(fā)生的操作。這是依靠command對象執(zhí)行

45、的。你使用command對象來發(fā)送SQL語句給數據庫。 command對象使用connection對象來指出與哪個數據庫進行連接。你能夠單獨使用command對象來直接執(zhí)行命令,或者將一個 command對象的引用傳遞給SqlDataAdapter,它保存了一組能夠操作下面描述的一組數據的命令。 l SqlDataReader對象 許多數據操作要求你只是讀取一串數據。data reader對象允許你獲得從command對象的SELECT語句得到的結果??紤]性能的因素,從data reader返回的數據都是快速的且只是“向前”的數據流。這意味著你只能按照一定的順序從數據流中取出數據。這對于速度來

46、說是有好處的,但是如果你需要 操作數據,更好的辦法是使用DataSet。 l DataSet對象 DataSet對象是數據在內存中的表示形式。它包括多個DataTable對象,而 DataTable包含列和行,就象一個普通的數據庫中的表。你甚至能夠定義表之間的關系來創(chuàng)建主從關系(parent-child relationships)。DataSet是在特定的場景下使用幫助管理內存中的數據并支持對數據的斷開操作的。DataSet是被所有Data Providers使用的對象,因此它并不像Data Provider一樣需要特別的前綴。 l SqlDataAdapter對象 某些時候你使用的數據主要

47、是只讀的,并且你很少需要將其改變至底層的數據源。同樣一些情況要求在內存中緩存數據,以此來減少并不改變的數據被數據庫調用的次數。Data adapter通過斷開模型來幫助你方便的完成對以上情況的處理。當在一單批次的對數據庫的讀寫操作的持續(xù)的改變返回至數據庫的時候,Data adapter 填充(fill)DataSet對象。data adapter包含對連接對象以及當對數據庫進行讀取或者寫入的時候自動的打開或者關閉連接的引用。另外,data adapter包含對數據的SELECT,INSERT,UPDATE和DELETE操作的command對象引用。你將為DataSet中的每一個 table都定

48、義data adapter,它將為你照顧所有與數據庫的連接。所有你將做的工作是告訴data adapter什么時候裝載或者寫入到數據庫。 3、ADO.NET的體系結構換個角度看ADO.NET的體系結構:4、ADO.NET中數據庫連接l System.Data.SqlClient.SqlConnection常用的一些連接字符串(C#代碼): SqlConnection conn = new SqlConnection( "Server=(local);Integrated Security=SSPI;database=Pubs"); SqlConnection conn =

49、new SqlConnection("server=(local)NetSDK;database=pubs;Integrated Security=SSPI"); SqlConnection conn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"); SqlConnection conn = new SqlConnection(" data source=(local);initial catalog

50、=xr;integrated security=SSPI;persist security info=False;workstation id=XURUI;packet size=4096; "); SqlConnection myConn  = new SqlConnection("Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer"); SqlConnection conn = new SqlConnection( &qu

51、ot; uid=sa;pwd=passwords;initial catalog=pubs;data source=;Connect Timeout=900"); l System.Data.OleDb.OleDbConnection常用的一些連接字符串(C#代碼): OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:MyWeb8105GrocerToGo.mdb"); OleDbConnection conn =

52、new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Password=; User ID=Admin;Data Source=grocertogo.mdb;"); OleDbConnection conn = new OleDbConnection("Provider=MSDAORA; Data Source=ORACLE8i7;Persist Security Info=False;Integrated Security=yes"); OleDbConnection conn = new OleD

53、bConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:binLocalAccess40.mdb"); OleDbConnection conn = new OleDbConnection("Provider=SQLOLEDB;Data Source=MySQLServer;Integrated Security=SSPI"); l System.Data.OracleClient.OracleConnection常用的一些連接字符串(C#代碼): OracleConnection myC

54、onn = new System.Data.OracleClient.OracleConnection("Data Source=Oracle8i;Integrated Security=yes"); l 其他廠商提供的數據庫連接: DB2Connection myConn = new IBM.Data.DB2.DB2Connection("DATABASE = SAMPLE;UID=<username> PWD=<password>"); DB2Connection myConn = new IBM.Data.DB2.DB2Co

55、nnection("DATABASE = SAMPLE"); l System.Data.Odbc.OdbcConnection常用的一些連接字符串(C#代碼): OdbcConnection conn = new OdbcConnection("Driver=SQL Server;Server=MyServer;Trusted_Connection=yes;Database=Northwind;"); OdbcConnection conn = new OdbcConnection("Driver=Microsoft ODBC for Oracle;Server=ORACLE8i7;Persist Security Info=False;Trusted_Connection=yes"); OdbcConnection conn = new OdbcConnection("Driver=Microsoft Access Driver (*.mdb);DBQ=c:binnwind.mdb"); OdbcConnection conn = new OdbcConnection("Driver=Microsoft Excel Driver (*.xls);DBQ

溫馨提示

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

評論

0/150

提交評論