vc 第11講 簡單數(shù)據(jù)庫編程_第1頁
vc 第11講 簡單數(shù)據(jù)庫編程_第2頁
vc 第11講 簡單數(shù)據(jù)庫編程_第3頁
vc 第11講 簡單數(shù)據(jù)庫編程_第4頁
vc 第11講 簡單數(shù)據(jù)庫編程_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Visual C# .NET第十一講 簡單數(shù)據(jù)庫編程1數(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)用程序。 2數(shù)據(jù)庫訪問的幾個概念 數(shù)據(jù)源(Data Source) 數(shù)據(jù)源是指本地和遠程的物理數(shù)據(jù)庫,或者是XML文件。 數(shù)據(jù)提供者(Data Provider) 數(shù)據(jù)提供者將如何實現(xiàn)與物理數(shù)據(jù)庫或者XML文件連接的復(fù)雜過程細節(jié)對用戶隱藏,展現(xiàn)在用戶面前的只是簡單地

2、使用該部件輕松地完成連接到一個或多個數(shù)據(jù)源、傳送命令,以及將數(shù)據(jù)傳送到數(shù)據(jù)集(DataSet)中。 數(shù)據(jù)集(DataSet) 數(shù)據(jù)集對象用來表示來自一個或多個數(shù)據(jù)源并保存在內(nèi)存中的表和關(guān)系。3ADO.NET對象模型的結(jié)構(gòu) ADO.NET的對象模型由兩個部分組成:數(shù)據(jù)提供程序(Data Provider,有時也叫托管提供程序)和數(shù)據(jù)集(DataSet)。數(shù)據(jù)提供程序負(fù)責(zé)與物理數(shù)據(jù)源的連接,數(shù)據(jù)集代表實際的數(shù)據(jù)。這兩個部分都可以和數(shù)據(jù)使用程序通信,如Web Form窗體和Win Form窗體。 1數(shù)據(jù)提供程序 .Net數(shù)據(jù)提供程序提供了四個核心對象:Connect, Command, DataRe

3、ader, DataAdapter4ADO.NET對象模型的結(jié)構(gòu)2. 數(shù)據(jù)集數(shù)據(jù)集(DataSet)是記錄在內(nèi)存中的數(shù)據(jù),它的結(jié)構(gòu)如圖所示。 5ADO.NET數(shù)據(jù)庫開發(fā)方式1.了解ADO.NET數(shù)據(jù)庫開發(fā) ADO.NET在Windows平臺下主要有4種數(shù)據(jù)庫訪問方式:OLEDB模式、ODBC模式、SQLClient模式和Oracle數(shù)據(jù)庫模式,每一種模式都有前述ADO.NET對象模型的一種實現(xiàn)。 OLEDB模式 OLEDB模式主要用于訪問OLEDB所支持的數(shù)據(jù)庫。 在使用OLEDB模式時需要引入的命名空間有System.Data和System.Data.OleDb,對應(yīng)于ADO.NET對象模型

4、中的對象,OLEDB模式的對象名稱分別為OleDbConnection對象,OleDbCommand對象,OleDbDataAdapter對象和OleDbDataReader對象。6ADO.NET數(shù)據(jù)庫開發(fā)方式 ODBC模式 ODBC模式主要用于連接ODBC所支持的數(shù)據(jù)庫。 在使用ODBC模式時需要引入的命名空間有System.Data和System.Data.Odbc,對應(yīng)于ADO.NET對象模型中的對象,ODBC模式的對象名稱分別為OdbcConnection對象,OdbcCommand對象,OdbcDataAdapter對象和OdbcDataReader對象。 SQLClient模式 S

5、QLClient模式只用于訪問MS SQL Server數(shù)據(jù)庫,是ADO.NET中比較特殊的組件。 在使用SQLClient模式時需要引入的命名空間有System.Data和System.Data.SqlClient,對應(yīng)于ADO.NET對象模型中的對象分別是SqlConnection對象、SqlCommand對象、SqlDataAdapter對象和SqlDataReader對象。 7ADO.NET數(shù)據(jù)庫開發(fā)方式2. ADO.NET中兩種基本的數(shù)據(jù)庫開發(fā)方式 利用Command對象和DataReader對象直接操作和顯示數(shù)據(jù) 可以使用數(shù)據(jù)命令Command對象和數(shù)據(jù)讀取器對象DataReade

6、r以便與數(shù)據(jù)源直接通信。使用數(shù)據(jù)命令Command對象和數(shù)據(jù)讀取器對象DataReader直接進行的數(shù)據(jù)庫操作包括:運行查詢和存儲過程、創(chuàng)建數(shù)據(jù)庫對象、使用DDL命令直接更新和刪除 使用DataAdapter對象和DataSet對象 如果應(yīng)用程序需要訪問多個源中的數(shù)據(jù),需要與其他應(yīng)用程序相互操作或者可受益于保持和傳輸緩存結(jié)果,則使用DataAdapter適配器對象和數(shù)據(jù)集DataSet是一個極好的選擇。83使用ADO.NET開發(fā)數(shù)據(jù)庫應(yīng)用程序的一般步驟 (1)根據(jù)使用的數(shù)據(jù)源,確定使用的.NET Framework數(shù)據(jù)提供程序;(2)建立與數(shù)據(jù)源的連接,需使用Connection對象;(3)執(zhí)

7、行對數(shù)據(jù)源的操作命令,通常是SQL命令,需使用Command對象;(4)使用數(shù)據(jù)集對獲得的數(shù)據(jù)進行操作,需使用DataReader、DataSet等對象;(5)向用戶顯示數(shù)據(jù),需使用數(shù)據(jù)控件。 9 SQL語言 結(jié)構(gòu)化查詢語言(Structure Query Language,簡稱SQL)是基于關(guān)系模型的數(shù)據(jù)庫查詢語言,它是一種非過程化的程序語言。 如:Select 圖書名稱,出版時間 from 圖書 where 出版社=機械工業(yè)出版社含義為從BOOK數(shù)據(jù)庫的圖書表中將出版社是機械工業(yè)出版社的所有圖書選出來,并列出它們的圖書名稱和出版時間。10SQL的基本語法11SQL的基本語法12SQL的基本

8、語法13 SQL語言 1數(shù)據(jù)查詢格式:SELECT ALL | DISTINCT |TOP N|TOP N PERCENT*|列名1或表達式1 AS 列標(biāo)題1 ,列名2或表達式2 AS 列標(biāo)題2FROM 表名1 IN 數(shù)據(jù)庫名1 別名1,表名2 IN 數(shù)據(jù)庫名2 別名2 WHERE 條件 GROUP BY列名1 , 列名2HAVING 條件ORDER BY 列名1 ASC | DESC , 列名2 ASC | DESC14例如,有語句:Select 學(xué)號,姓名,年級 from 學(xué)生 Where 專業(yè)=自動化其作用是“列出自動化專業(yè)的全部學(xué)生的學(xué)號、姓名和年級?!庇秩纾姓Z句:SELECT 學(xué)生

9、.學(xué)號,學(xué)生.姓名,必修課成績.課號,必修課成績.成績 FROM 學(xué)生,必修課成績 WHERE 學(xué)生.學(xué)號=必修課成績.學(xué)號其作用是“查詢出所有學(xué)生的必修課的學(xué)習(xí)情況,查詢結(jié)果中包含學(xué)號、姓名、課號和成績?!?152插入記錄 格式:INSERT INTO 表名(字段名1 , 字段名2, )VALUES (表達式1 ,表達式2,)例如,有下列語句:INSERT INTO 學(xué)生(學(xué)號,姓名,專業(yè)) VALUES(040501,朱碧春,計算機軟件)其功能是向“學(xué)生”表中插入一條記錄,并給學(xué)號、姓名和專業(yè)字段賦值。 3修改記錄格式:UPDATE 表名 SET 字段名1 = 表達式1,字段名2=表達式2

10、 WHERE 條件164刪除記錄 格式:DELETE FROM 表名 WHERE 條件例如,有以下語句:DELETE FROM 學(xué)生 WHERE 專業(yè)=經(jīng)濟管理其作用是從“學(xué)生”表中刪除所有“經(jīng)濟管理”專業(yè)的學(xué)生。17ADO.NET對象及其編程1Connection對象及其使用 在ADO.NET中,通過在連接字符串中提供必要的身份驗證信息,使用Connection對象連接到特定的數(shù)據(jù)源,該對象主要保存了有關(guān)數(shù)據(jù)庫服務(wù)器的信息,用于打開和關(guān)閉與數(shù)據(jù)庫的連接。屬性:ConnectionString方法:Open() Close()18ADO.NET對象及其編程 【例14-1】 編寫一個用來測試連接

11、的應(yīng)用程序,用來建立與當(dāng)前目錄下的Microsoft Access 2002數(shù)據(jù)庫Student.mdb的連接。程序的設(shè)置界面如圖14-3所示,程序的運行界面如圖14-4所示。19圖14-3 程序設(shè)計界面 圖14-4 程序運行界面 202Command對象及其使用(1)Command對象的常用屬性 CommandType屬性 CommandText屬性 CommandTimeout屬性 Connection屬性 212Command對象及其使用(2)Command對象的常用方法 Prepare方法 格式:public void Prepare( ); ExecuteNonQuery方法 格式:

12、public int ExecuteNonQuery(); 執(zhí)行Transact-SQL INSERT、DELETE、UPDATE及SET語句等命令,返回值為受影響的行數(shù)。 ExecuteReader方法 格式: public OleDbDataReader ExecuteReader(); 常用來執(zhí)行返回數(shù)據(jù)集結(jié)果的命令。如Select語句22 【例14-2】 已知在應(yīng)用程序當(dāng)前目錄下,有一個名為Student.mdb的數(shù)據(jù)庫,該數(shù)據(jù)庫中有一個名為student的表,表中的數(shù)據(jù)如圖14-5所示。請使用Command對象執(zhí)行SQL命令向表中插入一個學(xué)生的信息,學(xué)生數(shù)據(jù)如下: 01010106

13、張和平 男 010101 1985-7-28 安徽無為 插入后,student表中的內(nèi)容如圖14-6所示。 23圖14-5 插入前的student表中的數(shù)據(jù) 圖14-6 插入后的student表中的數(shù)據(jù) 243DataReader對象及其使用 ADO.NET的DataReader對象可以從數(shù)據(jù)庫中檢索只讀、只進的數(shù)據(jù)流,實現(xiàn)對數(shù)據(jù)源中的數(shù)據(jù)高速、只向前的訪問。(1)DataReader對象的常用屬性 FieldCount屬性 RecordsAffected屬性25(2)DataReader對象的常用方法 Read方法 格式:public bool Read(); 使DataReader對象前進

14、到下一條記錄 Close方法 格式:public void Close(); 關(guān)閉DataReader對象 Get方法 格式:public Get (int ordinal); 從ordinal指定的列中讀取數(shù)據(jù)26 【例14-3】 已知在應(yīng)用程序當(dāng)前目錄下,有一個名為Student.mdb的數(shù)據(jù)庫,該數(shù)據(jù)庫中有一個名為student的表。請編寫一個程序用來從該表中讀取所有男生的數(shù)據(jù),并顯示出來。程序的設(shè)計界面如圖14-7所示,程序的運行界面如圖14-8所示。程序運行時單擊【連接并讀取】按鈕,將會把所有男生的數(shù)據(jù)顯示在窗體上。 27圖14-7 程序設(shè)計界面 圖14-8 程序運行界面 284Da

15、taAdapter對象及其使用 DataAdapter通過使用Command和Connection對象在數(shù)據(jù)源和數(shù)據(jù)集(DataSet)兩者之間構(gòu)成一座橋梁。即結(jié)合DataSet使用,使得DataSet“連接”到數(shù)據(jù)源中,以便檢索和保存數(shù)據(jù)。 本質(zhì)上DataAdapter是容器,它含有4個預(yù)先配置好的Command實例,即SelectCommand、InsertCommand、DeleteCommand和UpdateCommand。(1)DataAdapter對象的常用屬性 SelectCommand屬性 InsertCommand屬性 UpdateCommand屬性 DeleteComman

16、d屬性 29(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ù)集進行的插入、刪除等操作更新到數(shù)據(jù)源中。該方法用于數(shù)據(jù)集中只有一個表。 格式2:public override int Update(DataSet dataSet,string Table); 適用于數(shù)據(jù)集中存在多個

17、表的情況。305DataSet對象及其使用 (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對象重新實現(xiàn)例14-

18、3的功能。31(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對象更新數(shù)據(jù)源 利用Da

19、taAdapter對象的Update方法。3233數(shù)據(jù)綁定在Windows窗體應(yīng)用程序中,幾乎每個商業(yè)應(yīng)用程序都需要從某類數(shù)據(jù)源中讀取信息,而實現(xiàn)這一功能的通常方式是采用數(shù)據(jù)綁定。數(shù)據(jù)綁定是指將控件的某些屬性值與數(shù)據(jù)集中的數(shù)據(jù)元素連接在一起,控件的屬性變化會反映到數(shù)據(jù)集中,反之也一樣。數(shù)據(jù)綁定的好處是可以大大簡化數(shù)據(jù)的展示,此外對綁定的統(tǒng)一管理可以使界面元件能同步更新,實現(xiàn)記錄向前向后瀏覽時的自動同步更新。34數(shù)據(jù)綁定有兩種類型的數(shù)據(jù)綁定:簡單綁定和復(fù)雜綁定。簡單數(shù)據(jù)綁定是指將一個控件和單個數(shù)據(jù)元素(如數(shù)據(jù)表的列值)進行綁定,大多數(shù)Windows窗體控件如文本框控件都具有這個能力。復(fù)雜數(shù)據(jù)綁定

20、指將一個控件和多個數(shù)據(jù)元素進行綁定,具有該能力的有DataGrid、ListBox和ComboBox等控件。35數(shù)據(jù)綁定對于控件的簡單數(shù)據(jù)綁定,編程實現(xiàn)時是直接指定該控件的DataBindings屬性,它是一個集合類型,存儲的是Binding類對象。只要調(diào)用DataBindings集合的Add方法即可加入新的綁定對象,如:textBox1.DataBindings.Add(Text, dataSet1, stuents.studentno); 或Binding newBinging = new Binding(Text, dataSet1, stuents.studentno);textBox1.DataBindings.Add(newBinding);36 【例14-6】 已知在應(yīng)用程序當(dāng)前目錄下,有一個名為Student.mdb的數(shù)據(jù)庫,該數(shù)據(jù)庫中有一個名為student的表,請編寫一個瀏

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論