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

下載本文檔

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

文檔簡(jiǎn)介

1、Visual C# .NET第十一講 簡(jiǎn)單數(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存儲(chǔ)的數(shù)據(jù) 數(shù)據(jù)庫的核心是數(shù)據(jù),其具體的組織形式與數(shù)據(jù)庫管理系統(tǒng)緊密關(guān)聯(lián),而表現(xiàn)形式又取決于數(shù)據(jù)庫應(yīng)用程序。 2數(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é)對(duì)用戶隱藏,展現(xiàn)在用戶面前的只是簡(jiǎn)單地

2、使用該部件輕松地完成連接到一個(gè)或多個(gè)數(shù)據(jù)源、傳送命令,以及將數(shù)據(jù)傳送到數(shù)據(jù)集(DataSet)中。 數(shù)據(jù)集(DataSet) 數(shù)據(jù)集對(duì)象用來表示來自一個(gè)或多個(gè)數(shù)據(jù)源并保存在內(nèi)存中的表和關(guān)系。3ADO.NET對(duì)象模型的結(jié)構(gòu) ADO.NET的對(duì)象模型由兩個(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è)核心對(duì)象:Connect, Command, DataRe

3、ader, DataAdapter4ADO.NET對(duì)象模型的結(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平臺(tái)下主要有4種數(shù)據(jù)庫訪問方式:OLEDB模式、ODBC模式、SQLClient模式和Oracle數(shù)據(jù)庫模式,每一種模式都有前述ADO.NET對(duì)象模型的一種實(shí)現(xiàn)。 OLEDB模式 OLEDB模式主要用于訪問OLEDB所支持的數(shù)據(jù)庫。 在使用OLEDB模式時(shí)需要引入的命名空間有System.Data和System.Data.OleDb,對(duì)應(yīng)于ADO.NET對(duì)象模型

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

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

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

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

8、語法13 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)題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é)號(hào),姓名,年級(jí) from 學(xué)生 Where 專業(yè)=自動(dòng)化其作用是“列出自動(dòng)化專業(yè)的全部學(xué)生的學(xué)號(hào)、姓名和年級(jí)?!庇秩?,有語句:SELECT 學(xué)生

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

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

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

12、public int ExecuteNonQuery(); 執(zhí)行Transact-SQL INSERT、DELETE、UPDATE及SET語句等命令,返回值為受影響的行數(shù)。 ExecuteReader方法 格式: public OleDbDataReader ExecuteReader(); 常用來執(zhí)行返回?cái)?shù)據(jù)集結(jié)果的命令。如Select語句22 【例14-2】 已知在應(yīng)用程序當(dāng)前目錄下,有一個(gè)名為Student.mdb的數(shù)據(jù)庫,該數(shù)據(jù)庫中有一個(gè)名為student的表,表中的數(shù)據(jù)如圖14-5所示。請(qǐng)使用Command對(duì)象執(zhí)行SQL命令向表中插入一個(gè)學(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對(duì)象及其使用 ADO.NET的DataReader對(duì)象可以從數(shù)據(jù)庫中檢索只讀、只進(jìn)的數(shù)據(jù)流,實(shí)現(xiàn)對(duì)數(shù)據(jù)源中的數(shù)據(jù)高速、只向前的訪問。(1)DataReader對(duì)象的常用屬性 FieldCount屬性 RecordsAffected屬性25(2)DataReader對(duì)象的常用方法 Read方法 格式:public bool Read(); 使DataReader對(duì)象前進(jìn)

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

15、taAdapter對(duì)象及其使用 DataAdapter通過使用Command和Connection對(duì)象在數(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對(duì)象的常用屬性 SelectCommand屬性 InsertCommand屬性 UpdateCommand屬性 DeleteComman

16、d屬性 29(2)DataAdapter對(duì)象的常用方法 Fill方法 格式:public int Fill(DataSet dataSet, string srcTable); 從參數(shù)srcTable指定的表中提取數(shù)據(jù)以填充數(shù)據(jù)集 Update方法 格式1:public override int Update(DataSet dataSet); 把對(duì)參數(shù)dataSet所指定的數(shù)據(jù)集進(jìn)行的插入、刪除等操作更新到數(shù)據(jù)源中。該方法用于數(shù)據(jù)集中只有一個(gè)表。 格式2:public override int Update(DataSet dataSet,string Table); 適用于數(shù)據(jù)集中存在多個(gè)

17、表的情況。305DataSet對(duì)象及其使用 (1)DataSet對(duì)象的組成 DataTable對(duì)象、DataRelation對(duì)象、DataColume對(duì)象、DataRow(2)DataSet對(duì)象的填充 調(diào)用DataAdapter對(duì)象的Fill方法,使用DataAdapter對(duì)象的SelectCommand的結(jié)果來填充DataSet對(duì)象。(3)DataSet對(duì)象的訪問 格式1:數(shù)據(jù)集對(duì)象名.Tables“數(shù)據(jù)表名”.Rowsn“列名” 格式2:數(shù)據(jù)集對(duì)象名.Tables“數(shù)據(jù)表名”.Rowsn.ItemsArrayk 【例14-4】 使用DataAdapter和DataSet對(duì)象重新實(shí)現(xiàn)例14-

18、3的功能。31(4)向DataSet對(duì)象中添加行 DataRow MyDR=MyDs.Tables“Student”.NewRow(); MyDR“StudentID”=“01000102”; MyDR“Birthday”=#1983-5-18#; MyDS.Tables“Student”.Rows.Add(MyDR);(5)從DataSet對(duì)象中刪除行 MyDs.Tables“Student”.Rows4.Delete();(6)修改DataSet對(duì)象中的數(shù)據(jù) MyDs.Tables“Student”.Rows4“Native”=“江蘇南京”;(7)利用DataSet對(duì)象更新數(shù)據(jù)源 利用Da

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

20、指將一個(gè)控件和多個(gè)數(shù)據(jù)元素進(jìn)行綁定,具有該能力的有DataGrid、ListBox和ComboBox等控件。35數(shù)據(jù)綁定對(duì)于控件的簡(jiǎn)單數(shù)據(jù)綁定,編程實(shí)現(xiàn)時(shí)是直接指定該控件的DataBindings屬性,它是一個(gè)集合類型,存儲(chǔ)的是Binding類對(duì)象。只要調(diào)用DataBindings集合的Add方法即可加入新的綁定對(duì)象,如: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)前目錄下,有一個(gè)名為Student.mdb的數(shù)據(jù)庫,該數(shù)據(jù)庫中有一個(gè)名為student的表,請(qǐng)編寫一個(gè)瀏

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論