人體飲食健康系統畢業論文_第1頁
人體飲食健康系統畢業論文_第2頁
人體飲食健康系統畢業論文_第3頁
人體飲食健康系統畢業論文_第4頁
人體飲食健康系統畢業論文_第5頁
已閱讀5頁,還剩70頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、本科畢業設計(論文)題目:人體飲食健康系統院(系) 專 業 班 級 姓 名 學 號 導 師 年 月 日人體飲食健康系統摘要隨著現代農業與食品工業的發展,食物的種類越來越多,同時,人們的生活節奏日益加快,消費者缺乏食品營養與健康方面的知識,飲食結構不合理,營養平衡經常被打破,導致疾病不斷滋生,如三高,營養不良等。本人體飲食健康系統采用c/s結構,主要對用戶的飲食信息以及營養攝入情況進行管理,方便用戶建立一個完善的、強大的飲食信息數據庫。本文詳細介紹了人體飲食健康系統的實現原理及所用到的技術方案,最終實現動態跟蹤消費者的飲食習慣,進行營養評估和營養配餐,幫助消費者建立起健康的飲食方案。關鍵詞: 人

2、體飲食健康系統 飲食習慣 營養評估 c/s human diet and health systemabstract with the development of modern agriculture and food industry, the kinds of food became rich . at the same time, the pace of modern peoples life was becoming fast and people had the lack of knowledge about nutrition and health, so that diet s

3、tructure was irrational , nutritional balance was often broken up and there were many diseases, such as high blood sugar, high blood lipids, hypertension, malnutrition and so on. the c/s structure is used to the human diet health system , it facilitates the users to establish a perfect and powerful

4、diet information database,mainly on the users diet and nutrition information management, this paper introduces the realization of the human diet health system principle and use of technology solutions, realizes the dynamic tracking about eating habits of consumers, and conducts nutritional assessmen

5、t and nutrition recipe, in order to help consumers establish a healthy diet program.key word:human diet and health system eating habits nutritional assessment 目錄中文摘要i英文摘要ii主要符號列表vii1 緒論11.1題目背景及研究意義11.2國內外相關研究情況12 人體飲食健康系統開發工具及語言特點32.1 visual studio.net主要特點如下32.1.1提供加速開發過程的高效工具32.1.2 提供對各種網絡應用程序的快速設

6、計能力32.1.3 利用xml和web service來簡化分布式計算32.1.4快速構建中間層商務組件32.1.5構建可靠的可伸縮解決方案32.2.1簡潔的語法42.2.2精心地面向對象設計42.3 sql2008主要特點52.3.1 net框架52.3.2 xml技術52.3.3 ado.net2.0版本52.3.4增強的安全性52.3.5 transact-sql的增強性能62.3.6 sql服務中介62.3.7通告服務62.3.8 web服務62.3.9報表服務62.3.10全文搜索功能的增強62.4 c#與ado.net72.4.1c#中的數據庫訪問72.4.2 數據綁定152.5

7、sql語言162.5.1表定義語句162.5.2視圖定義語句162.5.3索引定義語句172.5.4數據操縱語句172.5.5 insert語句172.5.6 update語句172.5.7 delete語句172.5.8查詢語句172.5.9條件查詢182.5.10查詢排序182.5.11統計查詢182.5.12group by子句182.5.13distinct關鍵詞192.5.14 top關鍵詞192.5.15多表查詢192.5.16多重查詢192.5.17 exists關鍵詞193 系統分析203.1需求分析203.2開發工具的選擇204 總體設計214.1項目規劃214.2 系統業務

8、流程分析214.3 系統功能結構225 系統設計235.1設計目標235.2開發及運行環境235.3數據庫設計235.3.1數據表的概要說明235.3.2數據表e-r圖245.3.3主要的數據表結構266 主要功能模塊及界面設計296.1系統登錄設計296.2主窗口306.3用戶基本信息窗口316.4營養攝入標準窗口326.5飲食記錄窗口336.6營養評估窗口356.7飲食推薦窗口366.8營養配餐窗口367 測試387.1軟件測試的重要性387.2人體飲食健康系統主窗體模塊測試388小結39參考文獻40致謝42畢業設計(論文)知識產權聲明43畢業設計(論文)獨創性聲明44附錄a45附錄b54

9、 主要符號列表microsoft visual studio 2010 系統開發平臺microsoft sql server 2008 數據庫c# 系統開發語言c/s 客戶/服務器http 超文本傳輸協議ado.net 數據源進行交互的面向對象類庫1 緒論1.1題目背景及研究意義 居民膳食營養狀況是一個國家經濟發展和社會進步的重要標志1。改革開放以來,人們的物質水平不斷提高,人們的飲食已由溫飽型轉向營養型 。我們知道,不同類型的人,由于年齡、體重、勞動強度、性別等差別,每日所要攝取的營養素標準有所不同,但是人們往往更多注重的是食品的美味,卻往往忽略食物的搭配及營養2,飲食結構不合理,營養平衡經

10、常被打破,導致疾病不斷滋生。有研究表明:健康膳食是預防慢性病如肥胖、高血壓、膽固醇血癥等的主要措施之一3。本課題則以營養學理論為基礎,運用現代信息技術,跟蹤消費者的飲食習慣,及時提出預警和指導信息,幫助消費者建立起健康的飲食方案。1.2國內外相關研究情況 目前國內外對醫學營養學教育及研究均十分重視4-7,在國內科研人員在營養健康的調研和實驗中首先選擇的群體是學生,由于學生營養與健康狀況是反映一個國家或地區經濟與社會發展、衛生保健水平和人口素質的重要指標8。學生營養健康現狀的調查結果顯示學生們的營養攝入不均衡,大體表現為營養不良,低血紅蛋白,肥胖等癥狀,研究報告中提出的解決方案是每個學校須配備專

11、業的營養配餐師,以保證學生科學的攝食營養9-12。隨著計算機與網絡技術的發展,研究人員開始用計算機輔助人體營養配餐,進行決策但總體國內對這方面研究不多13-16,較早的有北方工業大學和北京營養研究所1991年研制的“大學生營養配餐電腦系統”17,該系統實質是用電腦來手工配餐,還沒有能夠達到自動配餐和專家支持的水平四川一研究所研制了“衛生導餐系統”于1997年在湖北通過國家鑒定。另有科研人員研制了營養評價和營養配餐電腦18,以及應用微機進行營養配餐和菜肴營養評價19。國外在這方面做了不少的研究20,21,在二十一世紀初期,國外在利用計算機進行營養配餐方面要領先于我國,而且趨向于方便、實用、小型化

12、的硬件產品。如日本東芝公司的小型智能菜譜營養機,可根據季節、人體年齡、性別、體重等數據幫助人們選擇合乎口味的主副食菜譜并計算出營養含量22。可按用餐人數計算出各種菜的配料和用量;能計算出烹飪時間,具有營養成分測定,運動食醋調節,減肥計劃制定與效益計算等多種功能。現在面向營養治療已是醫院對疾病綜合治療中不可缺少的一個重要組成部分23,國內外已有很多營養學者和臨床醫療工作者應用各種膳食評價方法對膳食因,素與慢性病之間的關系進行了研究24,科研人員將營養配餐與醫學相結合,對患者進行營養治療。還有各種營養配餐軟件是面向個人,更人性化,操作簡單做到每個人都可以營養膳食。軟件未來的發展趨勢是操作起來更便捷

13、,面向的對象更全面,智能化,能夠滿足用戶飲食健康方面的更多查詢需求。2 人體飲食健康系統開發工具及語言特點2.1 visual studio.net主要特點如下2.1.1提供加速開發過程的高效工具 visual studio.net25提供了一個統一的、緊密集成的可視化編程的環境,能夠幫助用戶簡化開發網絡應用程序過程,并且縮短學習使用方法的時間。這個平臺提供了一種新的語言c#和共享的html、xml和樣式單編輯器,用戶可以輕松地借助包括c#在內的任何一種visual studio語言來開發網絡應用程序。2.1.2 提供對各種網絡應用程序的快速設計能力 此平臺借助了web form,這使得用戶可

14、以用它們在開發基于窗體的桌面應用程序時,創建跨平臺、跨瀏覽器的網絡應用程序。2.1.3 利用xml和web service來簡化分布式計算 xml被用來對上述功能請求的參數進行格式的統一,從而使這些請求能夠使用于所有的軟件和硬件。這樣使得對web service的訪問能夠通過使用任何一種組件模型、任何一種語言、在任何一種操作系統上實現。 而web service借助標準的intemet協議在網絡上調用商務邏輯。http被作為web service傳輸的基礎協議,這個協議使得對功能的請求能夠穿越各種團體所使用的防火墻。2.1.4快速構建中間層商務組件visual studio核心目標就是要給應用

15、程序提供應用程序快速部署工具,基于服務器。利用visual studio.net平臺創建的組件將給您的運作提供非常棒的伸縮性和功能。2.1.5構建可靠的可伸縮解決方案借助visual studio.net,用戶可以很容易地創建具有可靠的和伸展能力的應用組件和程序。2.2 c#技術概述c#,這個語言在使得應用程序能夠快速開發的同時,并沒有抹掉c和c+程序員所在乎的一些特性。c#忠實地繼承了c和c+的優點。快速應用程序開發(rapid application development,rad)的思想與簡潔的語法將會使你迅速成為一名優秀的軟件開發人員。該語言是專門為.net應用而開發出的語言,這從根本

16、上保證了c#與.net框架的完美結合。在.net運行庫的支持下,.net框架的各種優點在c#中表現得很完美。c#的一些突出的特點:精心地面向對象設計完整的安全性與錯誤處理簡潔的語法與web的緊密結合靈活性與兼容性版本處理技術2.2.1簡潔的語法 c#的代碼在.net框架不允許直接地內存操作,提供的可操縱環境下運行,沒有了指針是它最大的特色。在c+中被經常使用的操作符(例如:“:”、“-”和“.,”)已經不再出現。c#只支持一個“.”。c#中,用真正的關鍵字換掉了那些把活動模板庫(active template library,alt)和com搞得亂糟糟的偽關鍵字,如(ole_color、boo

17、l、variant_bool、dispid_xxxxx等等)。c#操作符在.net類庫中都有了新名字。2.2.2精心地面向對象設計從smalltalk起,面向對象的話題始終圍繞著任何一種現代程序設計語言。c#確實具有面向對象的語言所應有的一切特性:封裝、繼承和多態性,這些也不出眾。但是通過精心地面向對象設計,由高級商業對象到系統級應用,c#建立廣泛組件的最優選擇。在c#的類型系統里,每種類型都可以看成一個對象。c#提供一個叫做裝箱(boxing)和拆箱(unboxing)的機制來完成這種操作,但不會給用戶帶來困擾。c#只允許單繼承,也就是一個類不再有多個基類,因而避免了類型定義的混亂。你會在繼

18、續的學習中了解到c#中沒有了全局函數,沒有全局變量,也沒有全局常數。所有必須封裝在一個類之中。你書寫的代碼會具有更好的可讀性,并且大大減少了發生命名沖突的可能性。而這整個c#的類模型是建立在.net虛擬對象系統(visual object system,vos)的基礎之上,它的對象模型是.net基礎架構的一部分,不再是它本身的組成部分。在vb中我們得來的豐富的rad經驗,使得c#具備了良好的開發環境。結合自身強大的面向對象的功能,c#讓開發人員的生產效率得到極大的提高。對于公司來說,軟件開發周期縮短會使他們更好面對網絡經濟的激烈競爭。在效率和功能的杠桿上人們終于找到了支點。2.3 sql200

19、8主要特點2.3.1 net框架 在sql server2008中,開發人員通過運用相似的語言,如微軟的visualc#.net與微軟的visualbasic,將能夠創建數據庫對象。開發人員還將能創建兩個新的對象用戶定義的類和集合。 2.3.2 xml技術 在使用本地網絡和互聯網與在不同應用軟件之間傳輸數據的時候,可擴展標記語言(xml)是一個很重要的標準。sql server2008也會支持存儲和查詢可擴展標記語言文件。 2.3.3 ado.net2.0版本 由sql類的新的支持,到多活動結果集(mars)和sql server2008中的ado.net將推動數據集操縱和存取,實現更大的可升

20、級性和便利性。 2.3.4增強的安全性 sql server2008中的新型安全模式將用戶與對象分開,提供fine-grainaccess存取并允許對數據存取進行更多的控制。所有系統表格會作為視圖得到實施,對數據庫系統對象進行更大程度控制。 2.3.5 transact-sql的增強性能 sql server2008為開發能夠升級的數據庫應用軟件,提供新的語言功能。這增強的性能含錯誤處理,功能遞歸查詢,關系運算符和其他數據列排行功能。 2.3.6 sql服務中介sql服務中介給大型營業范圍應用軟件提供了一個分布式和異步應用框架。 2.3.7通告服務 通告服務使業務建立多樣的通知應用軟件,能夠向

21、任何設備,提供個人化以及及時的信息,如股市警報、包裹遞送警報、新聞訂閱、航空公司票價等。在sql server2008,通告服務與其他技術緊密地融合在了一起,這些技術包括分析服務以及sqlservermanagementstudio。 2.3.8 web服務 在sql server2008,開發人員能夠在數據庫層開發web服務,將sql server當成一個超文本傳輸協議(http)的偵聽器,并且能夠為網絡服務中心應用軟件提供一個新型的數據存取功能。 2.3.9報表服務 在sql server2008中,報表服務能夠提供報表控制,可通過visualstudio2010發行。 2.3.10全文搜

22、索功能的增強 sql server2008支持豐富的全文應用軟件。服務器的編目功能將得到一定增強,對編目對象提供了更大的靈活性。查詢性能與升級性也大幅得到改進,同時新的管理工具可以為有關全文功能的運行,提供更深入的了解。2.4 c#與ado.net2.4.1c#中的數據庫訪問26 以.net框架編寫的(包括用c#編寫的應用程序)應用程序需要訪問數據庫時,將使用ado.net實現數據庫訪問。數據綁定是一種非常易用的訪問數據庫的方法,可以減少編寫的代碼量。一些比較簡單任務可以通過純粹聲明式代碼來完成。 數據訪問框架的ado.net是微軟的最新產物,是.net框架的一部分。在ado.net使用之前,

23、開發人員在asp(active server pages)或visual basic中使用ado(ativex data objects),它是一組com(component object model,組件對象模型)組件,可以通過使用一個簡單的封裝類提供對底層數據訪問代碼的訪問。ado很大程度上簡化了數據庫訪問,但更高級的開發人員(特別是c+程序員)一般更喜歡使用更直接和更快的代碼,比如ole db(object linking and embedding for databases)代碼庫。ado.net比ado的功能更加的強大。它在.net代碼中是訪問數據庫的最好工具。在.net框架里的a

24、do.net類型(在system.data命名空間和其子空間下的所有類型)含那些為了訪問sql server、odbc、ole db及oracle數據庫而優化的類型。它們基于通用類,因而使用ado.net訪問不同的dbms是相類似的。ado.net類型實現兩個主要的功能。 數據表示:用于包含數據庫數據(如數據表)的類型。 數據訪問:用于訪問數據庫中數據和操作數據庫的類型; 上面兩種類型之間聯系非常密切,在數據庫開發中兩種類型都會被用到。嚴格意義上來講,可以只用一種數據庫訪問類型就可以了。但是,若使用數據訪問類型來填充數據表示類型將會節省大量工作。 ado.net包括7個重要的基類,其中4個為數

25、據訪問類:dbconnection; dbdatareader; dbcommand; dbdataadapter。其他3個類為數據表示類: datarelation;datatable; dataset。 datatable類還使用了其他一些很重要的類如:datacolum、constraint和datarow,下面一一介紹它們。1)dbconnection dbconnection類應用與數據庫的連接。創建dbconnection對象的時候,應提供和dbms通信所需要的信息,比如數據庫的位置、密碼和用于認證的用戶名以及要訪問的dbms中的數據庫。 其他ado.net數據的訪問類依靠dbco

26、nnection和數據庫進行通信。dbconnection類的角色如圖2.1所示。圖2.1 dbconnection類 由dbconnection派生而來的類里,到數據庫的連接全是由連接字符串定義的,此字符串存儲在屬性為dbconnection.connectionstring中。數據庫連接應只在傳輸數據時才打開,因而創建dbconnection實例的時候并不是自動連接到數據庫。dbconnection類定義了open()方法及close()方法,用于控制連接什么時候能用。許多其他的ado.net類也能控制連接狀態,如有一些類在完成操作后關閉它們所使用的連接。 dbconnection對象還可

27、以參與事務。可用“dbconnection.begintransaction()”方法開始事務,或者使用“dbconnection.enlisttransaction()”作為已有事務的一部分執行操作。要訪問sql server或sql server速成版中的數據時,會使用sqlconnection,該類是dbconnection中的子類。一般來講,dbconnection和sqlconnection及其他子類都被稱為連接類。2)dbcommand dbcommand類可以提供與數據庫交互的主要方法。用dbcommand對象來執行sql語句并運行存儲過程等。dbcommand和其派生類被稱為命

28、令類。大多數情況下并不直接使用dbcommand,是用封裝dbcommand的其他對象。但有些時候要對數據庫通信實行更多的控制,此時就可以運用dbcommand對象。dbcommand對象的角色如圖2.2所示。圖2.2 dbcommand類 dbcommand中最重要的屬性應該是dbcommand.commandtext。若要執行sql語句,就必須把語句文本放在此屬性中。可以用dbcommand.commandtype來定要執行的語句類型,以dbcommand.connection.dbcommand.tranction來訪問底層的連接或事務。dbcommand對象中可能會有參數化的命令字符串

29、,命令里的參數來于類型為dbcommand. parameters集合的屬性。它和直接在命令字符串中輸入參數相比有非常多的優點。 如果要用dbcommand對象來執行命令,這里有三種選擇,這取決于要執行的命令是什么和有些命令不返回結果,該狀況下可以用“dbcommand.executenonquery()”方法;有一些命令返回一個結果,這時候可用“dbcommand.executescalar()”方法;最后,有很多命令返回多行數據,這時候可用“dbcommand. executereader()”方法,它將會返回一個dbdatareader對象。sql server的dbcommand版本名

30、是sqlcommand。它有一些特殊方法,比如sqlcommand. executexmlreader()方法,它直接是以xml格式返回結果。3)dbdatareader 用dbdatareader類能夠從結果集中讀取數據,像是從執行存儲在命令對象中的命令生成的結果集中讀取數據。此類經過高度的優化,能夠迅速地訪問數據庫中的數據。但是這種優化也有些不方便的情況,比如只能以串行方式一次讀取一行數據。而不能讀完兩行后然后返回去讀取第一行。一般情況下,可以用dbdatareader對象來提取將要使用的行數據,并把它存儲在其他對象中。如能讀取一個結果集中的每行,然后將其存儲到在自定義集合或泛型列表對象中

31、自定義類里。與命令對象相同,許多數據閱讀器對象是由ado.net命名空間下的其他類使用的,用戶不必直接運用它們。圖2.3說明了如何在數據庫應用程序里用數據閱讀器。圖2.3 dbdatareader類 若要使用數據閱讀器對象,先必須要調用dbdatareader.read()方法選擇結果集中的第一行。用戶可以不斷調用該方法來移動數據閱讀器,使得數據閱讀器像結果集中的游標一樣總指向一行。獲取到一行的時候,read()方法返回是true;否則返回是false如當所有行都已經讀完的時候。也可用dbdatareader. hasrows屬性來判別結果集中是否還有其他行。 當前選中的行可用很多屬性和方法進

32、行檢查。dbdatareader.fieldcount查看當前行所包含了多少列,并且用dbdatareader的重載索引器來訪問各列。若知道將要訪問的列名,還可以使用基于整數的索引器通過位置來獲得列,可以用基于字符串的索引器來獲得列值。在兩種情況下,該方法都將返回object值,可把其轉化為其他類型的數據。還可用dbdatareader提供的多個方法來直接獲得類型化的數據,比如getint32()和getstring()是分別將指定列以int和string值返回,列由其索引選擇。要用這些方法取得值類型,那必須先要使用dbdatareader.isdbnull檢查空值;否則,空值將會引發異常。檢

33、查空值是非常關鍵的步驟,因為任何數據庫類型都可以為空。而這與.net中的值類型不同,可以為空的值類型比如int,在這種上下文環境中是不被支持的。dbdatareader也可以夠獲得關于它包含的數據的元信息使用dbdatareader.getschema table()方法,這樣做就能夠知道列的名稱、數據類型以及其他信息,比如列是否包含空值等。 與前面的其他類一樣,也有專門用于sql server的數據閱讀器類,這就是sqldatareader,本書將使用該類。該類繼承dbdatareader,提供將數據讀取為本地sql類型的方法,這樣就能夠避免空類型的問題。這些類型包含在system.data

34、.sqltypes命名空間中,是可為空的;如sqldouble和sqlint32。雖然這些類型也可以像標準的值類型那樣進行操作,但它們實際上是引用類型。4)dbdataadapter 在ado.net中,最核心的數據訪問類是dbdataadapter類。該類設計的目的只有一個即減少存儲在數據集對象中的數據和數據庫進行數據交換時的干擾,而它比前面介紹過的類型要復雜很多;與前面的類相同的是dbdataadapter類也有很多派生類,它們被稱為數據適配器類。dbdataadapter最關鍵的特性之一在于用于傳輸數據的命令對象被檢測出來,因而可以針對需要對它們進行定制。圖2.4說明了dbdataada

35、pter類的工作原理,包含它包括的命令對象。圖2.4 dbdataadapter類 數據適配器使用了4個命令對象,而每個命令對象分別存儲在對應的屬性中:selectcommand用于查詢數據、updatecommand用于編輯數據、insertcommand用于添加數據和deletecommand用于刪除數據。要使用適配器,并不是要全部用到這4個屬性,比如可以只用適配器來查詢數據。.net框架能夠根據其他命令的值推斷出命令的值,比如可以根據查詢命令生成更新的插入和刪除命令。在數據適配器中,最常用的兩個方法是dbdataadapter.update()和dbdataadapter.fill()。

36、update()方法更新數據庫中的數據;fill()方法從數據庫中獲取數據。這兩個方法都可以用于數據集或者是單個數據表。還可以用dbdataadapter.fillschema()獲取架構數據。sql server中的“dbdataadapter”版本是sql dbdataadapter。5)datatabledatatable為ado.net提供出來的第一個數據表示類。這與數據訪問類是不同,數據表示類沒有特定用于專門數據庫管理系統的子類,它們是獨立在平臺。一般來說,若是需要的話,數據表示類是完全可以獨立于數據庫使用。這個datatable類是用于存儲數據表。datatable對象存儲的表不是

37、一定要映射到數據庫中的表,因為datatable可能包含表中數據的一個子集,而這個子集可能只包含數據庫表的部分列、部分行。圖2.5說明了datatable與其他ado.net對象之間的關系。圖2.5 datatable 使用數據適配器來獲得完全填充的datatable,含數據datatable了,就能夠訪問行、列、約束以及它包含的其他信息。這些信息可以通過命名屬性來訪問,包括columns、rows和contraints等。上面所說的3個屬性都會返回一個集合類如“datarowcollection、datacolumncollection和constaintcollection”對象。和其他集

38、合類相同,這些類可以用在它們所包含的對象集合中進行導航,添加或刪除項等。datatable類另外一個非常重要的方面就是如何處理和修改數據等。比如,如果要刪除datatable中的某一行,數據適配器怎樣才知道在數據庫中刪除對應的數據?因為datatable對象記錄原始數據的修改,不是數據的當前狀態。從datatable中刪除一行并不是一下子刪除這些數據,只是把數據標記為已刪除。 不管何時都可以使用getchanges()方法來獲得對datatable對象所做的列表進行修改。再一些情況下可以使用acceptchanges()方法接受已經做的修改,從而覆蓋原來有的數據。如可以在修改提交到數據庫后這樣

39、做或者使用rejectchanges()撤銷所有的修改或者當最終用戶單擊“取消”按鈕時。datatable對象也表露了許多事件,可以在應用程序中定制這些事件,比如columnchanged和rowdeleted。(1)datacolumn datacolumn存儲了在數據表中定義的列所需的所有的信息。columns屬性包括一個datacolumncollection,是個datacolumn對象集合。datacolumn還包含與dbmd相匹配的屬性,包含columnname、allowdbnull、dataype和defaultvalue。(2)constaint constaint對象用于包

40、含表的所有元數據(這些數據不包含在datacolumn對象中)。constaint類作為更為具體類的基類,具體類包含uniqueconstaint用于確保給定列或者是列組合的值,是唯一的foreingkeyconstaint用于去實現表之間的關系。(3)datarow datarow類是用于存儲表中一行包含的數據。通過datatable.rows屬性能夠訪問到datarow collection對象,而后者存儲了組成表數據的多個datarow對象。通過索引器來訪問一行數據中的各列,索引器能夠讓你通過列名、版本和索引來訪問列。行是否被修改、刪除或以其他方式改變,可以通過datarowstate的

41、屬性來訪問,這個屬性的值為datarowstate類型,是種包含所有可能行狀態的枚舉類型。各個datarow對象也會有與datatable對應的方法,被用于接受、獲得更改和拒絕。比如可以推斷出調用datatable. acceptchanges()將級聯地對表的每行進行調用datarow acceptchanges()。4)datarelation 當處理多個datatable對象的時候,通常需要搭建表數據之間的關系。這個工作是由datarelation類來完成。它可以將多個datarelation對象進行組合起來,構成了一個datarelationcollection對象。關系可用到data

42、relation類的多個屬性來進行定義包括(childtable、childkeyconstraint、childcolumns、parenttable和parentkeyconstraint等)。這些屬性都是對相應的對象的進行引用,(如datatable和datacolumn)對象。關系名也存儲在datarelation.relationname屬性中。關于datarelation對象,它們封裝了ado.net比較高級的方面。5)dataset ado.net中最重要的類即dataset。從某種意義上來說,該類只是datarelation對象和datatable對象的集合如圖2.6所示。圖2

43、.6 dataset類而dataset的強大功能則主要體現在和其他對象的結合使用,包含用windows應用程序的控件和在web應用程序以及xml文檔web服務。dataset類還包含很多屬性以及方法;而且其中很多和它組成部分的屬性和方法相類似,如rejectchanges()和getchanges()。還有一些非常重要的屬性,比如tables“以datatablecollection類的形式包含dataset中的表集合、relations包含一個datarelation collection類,其中的relation對象定義了表之間的關系”。數據表之間的關系以及應用在數據的約束中使得對data

44、set的操作很麻煩。若是兩個表之間存在一對多的關系的話,則需要添加一行到其中一個表中,這可能要求另一個表中存在一行。而如果這行可能不存在,在這個時候為避免錯誤,則需要添加這些行的順序會非常重要,在此之前必須先添加位于關系“一”端的行。我們也可以將dataset.enforce constraints屬性改為false,這樣在執行編輯操作的時候將會忽略關系。(1)xml與dataset對象之間的關系 和ado.net的其他對象相同,設計dataset對象時也應該考慮xml數據。使用dataset. getxml()方法可以將數據集轉換為xml文檔;還可使用dataset.getxmlschema

45、()方法僅僅提取數據集中的架構其中包括數據集包含的所有表和其他對象的架構作為xml文檔;也還可以使用序列化技術在xml文檔和dataset之間進行轉換,由于dataset類實現了ixmlseria- lizable接口。xml與dataset對象之間的關系以及使用序列化在這兩種表示格式之間可以進行轉換,在.net框架中運用非常廣泛。它確實提供了一種通過internet交換數據和在應用程序層之間的很有效的方法。關鍵是有了數據集的xml表示形式后,我們就可在web服務之間交換dataset對象。(2)類型化數據集(typed data set) dataset對象的功能雖然很強大,但它們并不是符合

46、邏輯或是最容易使用的。若是要訪問表中的特定行,使用它會顯得非常不好用。所以必須使用dataset.tables集合來獲得正確的表,用datatable.rows集合來獲得正確的行,然后再通過datacolumn的方法或是以引用對象的形式提取列數據。訪問特定列的代碼行則如下所示:int result = (int)mydataset.tablesmytable.rows5 integercolumn;另外一種方法,那就是使用的類型化數據集。類型化數據集則是dataset的子類,但是它包含強類型方法屬性,使數據操作能夠更容易。若是使用類型化數據集,上面的代碼就可簡化為如下所示:int result

47、 = mytypeddataset.mytable5.integercolumn;這并不影響代碼的功能,但是卻使得輸入更容易,尤其是在啟用了智能感知功能的時候,以便于以后閱讀代碼。唯一不足之處是,需要在設計時就必須知道數據集中將會包含的數據的結構。但是因為數據庫的結構不太會有很大的改變,因而不會出現什么狀況。可以通過visual c#速成版界面或使用xsd.exe工具自動創建類型化數據集。visual c#速成版在創建類型化數據集的時候也要使用架構信息,但是它直接從數據庫獲取這些信息,這會使得對數據集的結構進行操作的更容易些。xsd.exe工具需要提供一個架構(schema),這會是以擴展名為

48、.xsd的xml架構文件來提供的。(3)性能 部分人不喜歡使用數據集,這由于它們可能是“重量級”對象,所以帶來的開銷在高性能應用程序中也許會很大。而且以數據集的形式通過web傳輸數據,這也許意味著要傳輸大量的xml數據。所以這些顧慮是可以理解的。如果非常在乎性的話,可以建立自己特有的類,并且直接使用數據閱讀器所提供的數據來進行填充。但是這些數據集也有它們獨特的用處。如只需少量代碼就能夠使用這些特性,而且操作它們的代碼一般都非常簡單。若是無數據集,那么要表示數據庫中的數據,同時還要在類中記錄所有編輯,并且這些編輯也可以很容易,順利地傳輸到數據庫,也許會需要大量的代碼,而且實現起來也可能會非常困難

49、。2.4.2 數據綁定數據綁定幫助程序員可以做少量工作就能夠用數據庫中的數據填充windows或的一種技術。.net框架讓程序員只需使用簡單的代碼就可以web控件或者是將數據源控件關聯起來,事實上也可以通過gui實現很多功能,而且用簡單的代碼實現。數據綁定有以下兩點的要求:要綁定數據的控件和數據源。數據源則包含數據庫連接,但是不僅僅局限在這里,還可以使用來自web服務的數據或者對象作為數據源。其中使用對象作為數據源是一種功能強大、便捷的方法,也還可以利用自己設計的類和自定義的集合。 當生成數據庫數據源的時候,通常不只是需要配置連接。數據庫數據源還包括著關于要訪問數據庫中什么對象的信息。但實際情

50、況下,在幕后一般將會生成類型化數據集。幕后還將會用到前面介紹的ado.net對象的連接、數據閱讀器、命令和數據適配器協同工作來創建數據源。編程人員不需要擔心,只需創建一個數據源并將它綁定在控件,如圖2.7所示。圖2.7 數據綁定若要綁定到控件,則還需要將控件的屬性設置為數據源的元素。對于一些簡單的控件,只需要將控件的text屬性改為數據庫中類型為文本列。也還可將數據綁定到列表控件其中包括下拉列表,這樣的列表中的每項都需要綁定到數據庫表中的每一行。而更高級的控件(如gridview)可以查看整個表的內容。也可以自定義的數據以及提供自定義的控件綁定架構,方便使用和編輯數據庫中的數據。2.5 sql

51、語言 sql是一種可以處理數據的高級語言,在查詢數據時,只需要指出要什么,不用指出如何實現的過程。sql語言包括數據定義、操縱、查詢和控制等功能。sql語言的語法格式非常簡單,使用起來方便、靈活。我們通用的sql語言,最早于1974年提出的,在當時被稱為sequel語言,而在后來被國際標準化組織iso采納為國際標準后,所以現在大多數數據庫管理系統則都會支持sql語言。2.5.1表定義語句 廣義上講,表定義語句包括數據表的創建語句(create語句)、數據表修改語句(alter語句)和數據表刪除語句(drop語句)。2.5.2視圖定義語句 因為視圖是對數據表中數據的一種顯示方式,所以用一個數據表

52、會有多個視圖。因而要根據用戶的不同需求,要將數據表中用戶所在乎的數據提取出來,提供給用戶而忽略數據表中其他數據。所以視圖也可以被理解為一種預先定義好的查詢。查詢的優點其實在于可以在多個數據表之間按照指定的條件對數據進行篩選并且顯示出來。2.5.3索引定義語句 加速數據查詢的重要手段即是索引,如果索引一旦被建立起來,那么就將成為數據庫的一部分,并且要占用數據庫的存儲空間。索引最重要的優點就是加快數據的查詢速度,但對于數據的插入、刪除以及修改操作來說,索引確實能夠降低了執行效率。2.5.4數據操縱語句 數據操縱含數據的更新、插入和刪除等操作,數據操縱語句則是應用程序編制中使用特別多的語句之一。2.

53、5.5 insert語句 insert語句所能夠實現的功能是向數據庫中插入新的數據,而這個語句的一般語法如下:insert into tablename (fieldlist)values(valuelist)2.5.6 update語句 update語句一般用于更新數據表中的數據。更新則是指數據已經存在于數據表中,但是需要對其中的數據進行修改,這樣才可以使用update語句來實現。2.5.7 delete語句 使用delete語句可以使得某些數據從數據表中刪除,此語句的基本語法如下:delete from tablename where select_conditon2.5.8查詢語句 sq

54、l語言中使用最為頻繁的語句是查詢語句,查詢可以根據需要多個數據表或者在數據表之間進行數據篩選。如果能夠熟練掌握數據查詢語句,這樣才能編寫出高質量的數據庫管理軟件。查詢則是sql語言中最核心的功能之一,在sql語言中是通過select語句來實現查詢功能的,sql查詢語句結構如下:select字段列表 from表名2.5.9條件查詢 select語句可以對字段進行篩選以及對記錄進行篩選和操作,這時候會用到where字句。而where子句在select語句中則是用于指定查詢條件,而且其結構一般如下:select 字段列表 from 表名 where 條件表達式2.5.10查詢排序 sql語句對查詢的

55、結果進行排序,這時,肯要用到order by子句。還要可能會用到兩個負責排序方式的關鍵詞des和casc,其中asc指的是明按升序排列查詢結果;而desc則是指明按降序進行排列。排序查詢的結構如下:select fieldlist from tablenamewhere select_conditonorder by field1 asc|desc,field2 asc|desc2.5.11統計查詢 sql語言對數值型的字段有著統計的功能,該功能用到5個統計函數,如:(count(*)統計符合查詢條件的記錄的個數;avg(field)計算某個數值型字段的平均值;min(field)返回某個數值型字段的最小值

溫馨提示

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

評論

0/150

提交評論