版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Visual C# .NET程序設(shè)計(jì),第十一講 簡單數(shù)據(jù)庫編程,數(shù)據(jù)庫和數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)庫:按一定結(jié)構(gòu)組織在一起的相關(guān)數(shù)據(jù)的集合 數(shù)據(jù)庫管理系統(tǒng)(DBMS):它是專門負(fù)責(zé)組織和管理數(shù)據(jù)信息的軟件 數(shù)據(jù)庫應(yīng)用程序:它使我們能夠獲取、顯示和更新由DBMS存儲的數(shù)據(jù) 數(shù)據(jù)庫的核心是數(shù)據(jù),其具體的組織形式與數(shù)據(jù)庫管理系統(tǒng)緊密關(guān)聯(lián),而表現(xiàn)形式又取決于數(shù)據(jù)庫應(yīng)用程序。,數(shù)據(jù)庫訪問的幾個(gè)概念,數(shù)據(jù)源(Data Source) 數(shù)據(jù)源是指本地和遠(yuǎn)程的物理數(shù)據(jù)庫,或者是XML文件。 數(shù)據(jù)提供者(Data Provider) 數(shù)據(jù)提供者將如何實(shí)現(xiàn)與物理數(shù)據(jù)庫或者XML文件連接的復(fù)雜過程細(xì)節(jié)對用戶隱藏,展現(xiàn)在用戶面
2、前的只是簡單地使用該部件輕松地完成連接到一個(gè)或多個(gè)數(shù)據(jù)源、傳送命令,以及將數(shù)據(jù)傳送到數(shù)據(jù)集(DataSet)中。 數(shù)據(jù)集(DataSet) 數(shù)據(jù)集對象用來表示來自一個(gè)或多個(gè)數(shù)據(jù)源并保存在內(nèi)存中的表和關(guān)系。,ADO.NET對象模型的結(jié)構(gòu),ADO.NET的對象模型由兩個(gè)部分組成:數(shù)據(jù)提供程序(Data Provider,有時(shí)也叫托管提供程序)和數(shù)據(jù)集(DataSet)。數(shù)據(jù)提供程序負(fù)責(zé)與物理數(shù)據(jù)源的連接,數(shù)據(jù)集代表實(shí)際的數(shù)據(jù)。這兩個(gè)部分都可以和數(shù)據(jù)使用程序通信,如Web Form窗體和Win Form窗體。 1數(shù)據(jù)提供程序 .Net數(shù)據(jù)提供程序提供了四個(gè)核心對象:Connect, Command,
3、 DataReader, DataAdapter,ADO.NET對象模型的結(jié)構(gòu),2. 數(shù)據(jù)集 數(shù)據(jù)集(DataSet)是記錄在內(nèi)存中的數(shù)據(jù),它的結(jié)構(gòu)如圖所示。,ADO.NET數(shù)據(jù)庫開發(fā)方式,1.了解ADO.NET數(shù)據(jù)庫開發(fā) ADO.NET在Windows平臺下主要有4種數(shù)據(jù)庫訪問方式:OLEDB模式、ODBC模式、SQLClient模式和Oracle數(shù)據(jù)庫模式,每一種模式都有前述ADO.NET對象模型的一種實(shí)現(xiàn)。 OLEDB模式 OLEDB模式主要用于訪問OLEDB所支持的數(shù)據(jù)庫。 在使用OLEDB模式時(shí)需要引入的命名空間有System.Data和System.Data.OleDb,對應(yīng)于AD
4、O.NET對象模型中的對象,OLEDB模式的對象名稱分別為OleDbConnection對象,OleDbCommand對象,OleDbDataAdapter對象和OleDbDataReader對象。,ADO.NET數(shù)據(jù)庫開發(fā)方式, ODBC模式 ODBC模式主要用于連接ODBC所支持的數(shù)據(jù)庫。 在使用ODBC模式時(shí)需要引入的命名空間有System.Data和System.Data.Odbc,對應(yīng)于ADO.NET對象模型中的對象,ODBC模式的對象名稱分別為OdbcConnection對象,OdbcCommand對象,OdbcDataAdapter對象和OdbcDataReader對象。 SQL
5、Client模式 SQLClient模式只用于訪問MS SQL Server數(shù)據(jù)庫,是ADO.NET中比較特殊的組件。 在使用SQLClient模式時(shí)需要引入的命名空間有System.Data和System.Data.SqlClient,對應(yīng)于ADO.NET對象模型中的對象分別是SqlConnection對象、SqlCommand對象、SqlDataAdapter對象和SqlDataReader對象。,ADO.NET數(shù)據(jù)庫開發(fā)方式,2. ADO.NET中兩種基本的數(shù)據(jù)庫開發(fā)方式 利用Command對象和DataReader對象直接操作和顯示數(shù)據(jù) 可以使用數(shù)據(jù)命令Command對象和數(shù)據(jù)讀取器對
6、象DataReader以便與數(shù)據(jù)源直接通信。使用數(shù)據(jù)命令Command對象和數(shù)據(jù)讀取器對象DataReader直接進(jìn)行的數(shù)據(jù)庫操作包括:運(yùn)行查詢和存儲過程、創(chuàng)建數(shù)據(jù)庫對象、使用DDL命令直接更新和刪除 使用DataAdapter對象和DataSet對象 如果應(yīng)用程序需要訪問多個(gè)源中的數(shù)據(jù),需要與其他應(yīng)用程序相互操作或者可受益于保持和傳輸緩存結(jié)果,則使用DataAdapter適配器對象和數(shù)據(jù)集DataSet是一個(gè)極好的選擇。,3使用ADO.NET開發(fā)數(shù)據(jù)庫應(yīng)用程序的一般步驟,(1)根據(jù)使用的數(shù)據(jù)源,確定使用的.NET Framework數(shù)據(jù)提供程序; (2)建立與數(shù)據(jù)源的連接,需使用Connec
7、tion對象; (3)執(zhí)行對數(shù)據(jù)源的操作命令,通常是SQL命令,需使用Command對象; (4)使用數(shù)據(jù)集對獲得的數(shù)據(jù)進(jìn)行操作,需使用DataReader、DataSet等對象; (5)向用戶顯示數(shù)據(jù),需使用數(shù)據(jù)控件。,SQL語言,結(jié)構(gòu)化查詢語言(Structure Query Language,簡稱SQL)是基于關(guān)系模型的數(shù)據(jù)庫查詢語言,它是一種非過程化的程序語言。 如:Select 圖書名稱,出版時(shí)間 from 圖書 where 出版社=機(jī)械工業(yè)出版社 含義為從BOOK數(shù)據(jù)庫的圖書表中將出版社是機(jī)械工業(yè)出版社的所有圖書選出來,并列出它們的圖書名稱和出版時(shí)間。,SQL的基本語法,SQL的基
8、本語法,SQL的基本語法,SQL語言,1數(shù)據(jù)查詢 格式:SELECT ALL | DISTINCT |TOP N|TOP N PERCENT *|列名1或表達(dá)式1 AS 列標(biāo)題1 ,列名2或表達(dá)式2 AS 列標(biāo)題2 FROM 表名1 IN 數(shù)據(jù)庫名1 別名1,表名2 IN 數(shù)據(jù)庫名2 別名2 WHERE 條件 GROUP BY列名1 , 列名2 HAVING 條件 ORDER BY 列名1 ASC | DESC , 列名2 ASC | DESC,例如,有語句: Select 學(xué)號,姓名,年級 from 學(xué)生 Where 專業(yè)=自動化 其作用是“列出自動化專業(yè)的全部學(xué)生的學(xué)號、姓名和年級?!?又
9、如,有語句: SELECT 學(xué)生.學(xué)號,學(xué)生.姓名,必修課成績.課號,必修課成績.成績 FROM 學(xué)生,必修課成績 WHERE 學(xué)生.學(xué)號=必修課成績.學(xué)號 其作用是“查詢出所有學(xué)生的必修課的學(xué)習(xí)情況,查詢結(jié)果中包含學(xué)號、姓名、課號和成績?!?2插入記錄,格式:INSERT INTO 表名(字段名1 , 字段名2, ) VALUES (表達(dá)式1 ,表達(dá)式2,) 例如,有下列語句: INSERT INTO 學(xué)生(學(xué)號,姓名,專業(yè)) VALUES(040501,朱碧春,計(jì)算機(jī)軟件) 其功能是向“學(xué)生”表中插入一條記錄,并給學(xué)號、姓名和專業(yè)字段賦值。 3修改記錄 格式:UPDATE 表名 SET 字
10、段名1 = 表達(dá)式1,字段名2=表達(dá)式2 WHERE 條件,4刪除記錄,格式:DELETE FROM 表名 WHERE 條件 例如,有以下語句: DELETE FROM 學(xué)生 WHERE 專業(yè)=經(jīng)濟(jì)管理 其作用是從“學(xué)生”表中刪除所有“經(jīng)濟(jì)管理”專業(yè)的學(xué)生。,ADO.NET對象及其編程,1Connection對象及其使用 在ADO.NET中,通過在連接字符串中提供必要的身份驗(yàn)證信息,使用Connection對象連接到特定的數(shù)據(jù)源,該對象主要保存了有關(guān)數(shù)據(jù)庫服務(wù)器的信息,用于打開和關(guān)閉與數(shù)據(jù)庫的連接。 屬性:ConnectionString 方法:Open() Close(),ADO.NET對象
11、及其編程,【例14-1】 編寫一個(gè)用來測試連接的應(yīng)用程序,用來建立與當(dāng)前目錄下的Microsoft Access 2002數(shù)據(jù)庫Student.mdb的連接。程序的設(shè)置界面如圖14-3所示,程序的運(yùn)行界面如圖14-4所示。,圖14-3 程序設(shè)計(jì)界面,圖14-4 程序運(yùn)行界面,2Command對象及其使用,(1)Command對象的常用屬性 CommandType屬性 CommandText屬性 CommandTimeout屬性 Connection屬性,2Command對象及其使用,(2)Command對象的常用方法 Prepare方法 格式:public void Prepare( ); E
12、xecuteNonQuery方法 格式:public int ExecuteNonQuery(); 執(zhí)行Transact-SQL INSERT、DELETE、UPDATE及SET語句等命令,返回值為受影響的行數(shù)。 ExecuteReader方法 格式: public OleDbDataReader ExecuteReader(); 常用來執(zhí)行返回?cái)?shù)據(jù)集結(jié)果的命令。如Select語句,【例14-2】 已知在應(yīng)用程序當(dāng)前目錄下,有一個(gè)名為Student.mdb的數(shù)據(jù)庫,該數(shù)據(jù)庫中有一個(gè)名為student的表,表中的數(shù)據(jù)如圖14-5所示。請使用Command對象執(zhí)行SQL命令向表中插入一個(gè)學(xué)生的信息
13、,學(xué)生數(shù)據(jù)如下: 01010106 張和平 男 010101 1985-7-28 安徽無為 插入后,student表中的內(nèi)容如圖14-6所示。,圖14-5 插入前的student表中的數(shù)據(jù),圖14-6 插入后的student表中的數(shù)據(jù),3DataReader對象及其使用,ADO.NET的DataReader對象可以從數(shù)據(jù)庫中檢索只讀、只進(jìn)的數(shù)據(jù)流,實(shí)現(xiàn)對數(shù)據(jù)源中的數(shù)據(jù)高速、只向前的訪問。 (1)DataReader對象的常用屬性 FieldCount屬性 RecordsAffected屬性,(2)DataReader對象的常用方法 Read方法 格式:public bool Read(); 使
14、DataReader對象前進(jìn)到下一條記錄 Close方法 格式:public void Close(); 關(guān)閉DataReader對象 Get方法 格式:public Get (int ordinal); 從ordinal指定的列中讀取數(shù)據(jù),【例14-3】 已知在應(yīng)用程序當(dāng)前目錄下,有一個(gè)名為Student.mdb的數(shù)據(jù)庫,該數(shù)據(jù)庫中有一個(gè)名為student的表。請編寫一個(gè)程序用來從該表中讀取所有男生的數(shù)據(jù),并顯示出來。程序的設(shè)計(jì)界面如圖14-7所示,程序的運(yùn)行界面如圖14-8所示。程序運(yùn)行時(shí)單擊【連接并讀取】按鈕,將會把所有男生的數(shù)據(jù)顯示在窗體上。,圖14-7 程序設(shè)計(jì)界面,圖14-8 程序
15、運(yùn)行界面,4DataAdapter對象及其使用,DataAdapter通過使用Command和Connection對象在數(shù)據(jù)源和數(shù)據(jù)集(DataSet)兩者之間構(gòu)成一座橋梁。即結(jié)合DataSet使用,使得DataSet“連接”到數(shù)據(jù)源中,以便檢索和保存數(shù)據(jù)。 本質(zhì)上DataAdapter是容器,它含有4個(gè)預(yù)先配置好的Command實(shí)例,即SelectCommand、InsertCommand、DeleteCommand和UpdateCommand。 (1)DataAdapter對象的常用屬性 SelectCommand屬性 InsertCommand屬性 UpdateCommand屬性 Del
16、eteCommand屬性,(2)DataAdapter對象的常用方法 Fill方法 格式:public int Fill(DataSet dataSet, string srcTable); 從參數(shù)srcTable指定的表中提取數(shù)據(jù)以填充數(shù)據(jù)集 Update方法 格式1:public override int Update(DataSet dataSet); 把對參數(shù)dataSet所指定的數(shù)據(jù)集進(jìn)行的插入、刪除等操作更新到數(shù)據(jù)源中。該方法用于數(shù)據(jù)集中只有一個(gè)表。 格式2:public override int Update(DataSet dataSet,string Table); 適用于數(shù)
17、據(jù)集中存在多個(gè)表的情況。,5DataSet對象及其使用,(1)DataSet對象的組成 DataTable對象、DataRelation對象、DataColume對象、DataRow (2)DataSet對象的填充 調(diào)用DataAdapter對象的Fill方法,使用DataAdapter對象的SelectCommand的結(jié)果來填充DataSet對象。 (3)DataSet對象的訪問 格式1:數(shù)據(jù)集對象名.Tables“數(shù)據(jù)表名”.Rowsn“列名” 格式2:數(shù)據(jù)集對象名.Tables“數(shù)據(jù)表名”.Rowsn.ItemsArrayk 【例14-4】 使用DataAdapter和DataSet對象
18、重新實(shí)現(xiàn)例14-3的功能。,(4)向DataSet對象中添加行 DataRow MyDR=MyDs.Tables“Student”.NewRow(); MyDR“StudentID”=“01000102”; MyDR“Birthday”=#1983-5-18#; MyDS.Tables“Student”.Rows.Add(MyDR); (5)從DataSet對象中刪除行 MyDs.Tables“Student”.Rows4.Delete(); (6)修改DataSet對象中的數(shù)據(jù) MyDs.Tables“Student”.Rows4“Native”=“江蘇南京”; (7)利用DataSet對象
19、更新數(shù)據(jù)源 利用DataAdapter對象的Update方法。,數(shù)據(jù)綁定,在Windows窗體應(yīng)用程序中,幾乎每個(gè)商業(yè)應(yīng)用程序都需要從某類數(shù)據(jù)源中讀取信息,而實(shí)現(xiàn)這一功能的通常方式是采用數(shù)據(jù)綁定。數(shù)據(jù)綁定是指將控件的某些屬性值與數(shù)據(jù)集中的數(shù)據(jù)元素連接在一起,控件的屬性變化會反映到數(shù)據(jù)集中,反之也一樣。數(shù)據(jù)綁定的好處是可以大大簡化數(shù)據(jù)的展示,此外對綁定的統(tǒng)一管理可以使界面元件能同步更新,實(shí)現(xiàn)記錄向前向后瀏覽時(shí)的自動同步更新。,數(shù)據(jù)綁定,有兩種類型的數(shù)據(jù)綁定:簡單綁定和復(fù)雜綁定。簡單數(shù)據(jù)綁定是指將一個(gè)控件和單個(gè)數(shù)據(jù)元素(如數(shù)據(jù)表的列值)進(jìn)行綁定,大多數(shù)Windows窗體控件如文本框控件都具有這個(gè)能
20、力。復(fù)雜數(shù)據(jù)綁定指將一個(gè)控件和多個(gè)數(shù)據(jù)元素進(jìn)行綁定,具有該能力的有DataGrid、ListBox和ComboBox等控件。,數(shù)據(jù)綁定,對于控件的簡單數(shù)據(jù)綁定,編程實(shí)現(xiàn)時(shí)是直接指定該控件的DataBindings屬性,它是一個(gè)集合類型,存儲的是Binding類對象。只要調(diào)用DataBindings集合的Add方法即可加入新的綁定對象,如: textBox1.DataBindings.Add(Text, dataSet1, stuents.studentno); 或 Binding newBinging = new Binding(Text, dataSet1, stuents.studentno); textBox1.DataBindings.Add(newBinding);,【例14-6】 已知在應(yīng)用程序當(dāng)前目錄下,有一個(gè)名為Student.mdb的數(shù)據(jù)庫,該數(shù)據(jù)庫中有一個(gè)名為st
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)創(chuàng)新管理流程和制度范例
- 醫(yī)院患者入院制度
- 幼兒園日常衛(wèi)生管理與監(jiān)督制度
- XX車間生產(chǎn)線安全管理制度執(zhí)行與隱患排查考核(2024年度)
- 知情同意缺陷的醫(yī)療責(zé)任認(rèn)定模型
- 知情同意書法律風(fēng)險(xiǎn)的防控要點(diǎn)
- 睡眠障礙與腦小血管病的關(guān)聯(lián)管理
- 睡眠健康管理社區(qū)健康公平
- 眼外傷后眼壓異常的管理方案
- 真菌毒素致癌機(jī)制與化學(xué)預(yù)防策略
- 企業(yè)財(cái)務(wù)知識培訓(xùn)目的
- 警務(wù)基礎(chǔ)解脫技術(shù)
- xx市燃?xì)飧脑祉?xiàng)目可行性研究報(bào)告
- 煤礦井下安全員考試題庫及答案
- 海洋油氣新型結(jié)構(gòu)材料分析報(bào)告
- 2025年無人駕駛公共交通產(chǎn)品競爭力分析可行性報(bào)告
- 自然分娩的好處
- 2025年電大法理學(xué)期末考試題庫及答案
- 2025年職業(yè)技能鑒定-冷作工-冷作工職業(yè)技能監(jiān)定(中級)歷年參考題庫含答案解析(5套)
- 新生兒查體步驟及內(nèi)容
- 2025至2030鸚鵡馴養(yǎng)繁殖行業(yè)市場發(fā)展現(xiàn)狀及競爭格局與投資價(jià)值報(bào)告
評論
0/150
提交評論