版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Visual C# .NET第十一講 簡單數(shù)據庫編程1數(shù)據庫和數(shù)據庫系統(tǒng)數(shù)據庫:按一定結構組織在一起的相關數(shù)據的集合數(shù)據庫管理系統(tǒng)(DBMS):它是專門負責組織和管理數(shù)據信息的軟件數(shù)據庫應用程序:它使我們能夠獲取、顯示和更新由DBMS存儲的數(shù)據 數(shù)據庫的核心是數(shù)據,其具體的組織形式與數(shù)據庫管理系統(tǒng)緊密關聯(lián),而表現(xiàn)形式又取決于數(shù)據庫應用程序。 2數(shù)據庫訪問的幾個概念 數(shù)據源(Data Source) 數(shù)據源是指本地和遠程的物理數(shù)據庫,或者是XML文件。 數(shù)據提供者(Data Provider) 數(shù)據提供者將如何實現(xiàn)與物理數(shù)據庫或者XML文件連接的復雜過程細節(jié)對用戶隱藏,展現(xiàn)在用戶面前的只是簡單地
2、使用該部件輕松地完成連接到一個或多個數(shù)據源、傳送命令,以及將數(shù)據傳送到數(shù)據集(DataSet)中。 數(shù)據集(DataSet) 數(shù)據集對象用來表示來自一個或多個數(shù)據源并保存在內存中的表和關系。3ADO.NET對象模型的結構 ADO.NET的對象模型由兩個部分組成:數(shù)據提供程序(Data Provider,有時也叫托管提供程序)和數(shù)據集(DataSet)。數(shù)據提供程序負責與物理數(shù)據源的連接,數(shù)據集代表實際的數(shù)據。這兩個部分都可以和數(shù)據使用程序通信,如Web Form窗體和Win Form窗體。 1數(shù)據提供程序 .Net數(shù)據提供程序提供了四個核心對象:Connect, Command, DataRe
3、ader, DataAdapter4ADO.NET對象模型的結構2. 數(shù)據集數(shù)據集(DataSet)是記錄在內存中的數(shù)據,它的結構如圖所示。 5ADO.NET數(shù)據庫開發(fā)方式1.了解ADO.NET數(shù)據庫開發(fā) ADO.NET在Windows平臺下主要有4種數(shù)據庫訪問方式:OLEDB模式、ODBC模式、SQLClient模式和Oracle數(shù)據庫模式,每一種模式都有前述ADO.NET對象模型的一種實現(xiàn)。 OLEDB模式 OLEDB模式主要用于訪問OLEDB所支持的數(shù)據庫。 在使用OLEDB模式時需要引入的命名空間有System.Data和System.Data.OleDb,對應于ADO.NET對象模型
4、中的對象,OLEDB模式的對象名稱分別為OleDbConnection對象,OleDbCommand對象,OleDbDataAdapter對象和OleDbDataReader對象。6ADO.NET數(shù)據庫開發(fā)方式 ODBC模式 ODBC模式主要用于連接ODBC所支持的數(shù)據庫。 在使用ODBC模式時需要引入的命名空間有System.Data和System.Data.Odbc,對應于ADO.NET對象模型中的對象,ODBC模式的對象名稱分別為OdbcConnection對象,OdbcCommand對象,OdbcDataAdapter對象和OdbcDataReader對象。 SQLClient模式 S
5、QLClient模式只用于訪問MS SQL Server數(shù)據庫,是ADO.NET中比較特殊的組件。 在使用SQLClient模式時需要引入的命名空間有System.Data和System.Data.SqlClient,對應于ADO.NET對象模型中的對象分別是SqlConnection對象、SqlCommand對象、SqlDataAdapter對象和SqlDataReader對象。 7ADO.NET數(shù)據庫開發(fā)方式2. ADO.NET中兩種基本的數(shù)據庫開發(fā)方式 利用Command對象和DataReader對象直接操作和顯示數(shù)據 可以使用數(shù)據命令Command對象和數(shù)據讀取器對象DataReade
6、r以便與數(shù)據源直接通信。使用數(shù)據命令Command對象和數(shù)據讀取器對象DataReader直接進行的數(shù)據庫操作包括:運行查詢和存儲過程、創(chuàng)建數(shù)據庫對象、使用DDL命令直接更新和刪除 使用DataAdapter對象和DataSet對象 如果應用程序需要訪問多個源中的數(shù)據,需要與其他應用程序相互操作或者可受益于保持和傳輸緩存結果,則使用DataAdapter適配器對象和數(shù)據集DataSet是一個極好的選擇。83使用ADO.NET開發(fā)數(shù)據庫應用程序的一般步驟 (1)根據使用的數(shù)據源,確定使用的.NET Framework數(shù)據提供程序;(2)建立與數(shù)據源的連接,需使用Connection對象;(3)執(zhí)
7、行對數(shù)據源的操作命令,通常是SQL命令,需使用Command對象;(4)使用數(shù)據集對獲得的數(shù)據進行操作,需使用DataReader、DataSet等對象;(5)向用戶顯示數(shù)據,需使用數(shù)據控件。 9 SQL語言 結構化查詢語言(Structure Query Language,簡稱SQL)是基于關系模型的數(shù)據庫查詢語言,它是一種非過程化的程序語言。 如:Select 圖書名稱,出版時間 from 圖書 where 出版社=機械工業(yè)出版社含義為從BOOK數(shù)據庫的圖書表中將出版社是機械工業(yè)出版社的所有圖書選出來,并列出它們的圖書名稱和出版時間。10SQL的基本語法11SQL的基本語法12SQL的基本
8、語法13 SQL語言 1數(shù)據查詢格式:SELECT ALL | DISTINCT |TOP N|TOP N PERCENT*|列名1或表達式1 AS 列標題1 ,列名2或表達式2 AS 列標題2FROM 表名1 IN 數(shù)據庫名1 別名1,表名2 IN 數(shù)據庫名2 別名2 WHERE 條件 GROUP BY列名1 , 列名2HAVING 條件ORDER BY 列名1 ASC | DESC , 列名2 ASC | DESC14例如,有語句:Select 學號,姓名,年級 from 學生 Where 專業(yè)=自動化其作用是“列出自動化專業(yè)的全部學生的學號、姓名和年級?!庇秩?,有語句:SELECT 學生
9、.學號,學生.姓名,必修課成績.課號,必修課成績.成績 FROM 學生,必修課成績 WHERE 學生.學號=必修課成績.學號其作用是“查詢出所有學生的必修課的學習情況,查詢結果中包含學號、姓名、課號和成績?!?152插入記錄 格式:INSERT INTO 表名(字段名1 , 字段名2, )VALUES (表達式1 ,表達式2,)例如,有下列語句:INSERT INTO 學生(學號,姓名,專業(yè)) VALUES(040501,朱碧春,計算機軟件)其功能是向“學生”表中插入一條記錄,并給學號、姓名和專業(yè)字段賦值。 3修改記錄格式:UPDATE 表名 SET 字段名1 = 表達式1,字段名2=表達式2
10、 WHERE 條件164刪除記錄 格式:DELETE FROM 表名 WHERE 條件例如,有以下語句:DELETE FROM 學生 WHERE 專業(yè)=經濟管理其作用是從“學生”表中刪除所有“經濟管理”專業(yè)的學生。17ADO.NET對象及其編程1Connection對象及其使用 在ADO.NET中,通過在連接字符串中提供必要的身份驗證信息,使用Connection對象連接到特定的數(shù)據源,該對象主要保存了有關數(shù)據庫服務器的信息,用于打開和關閉與數(shù)據庫的連接。屬性:ConnectionString方法:Open() Close()18ADO.NET對象及其編程 【例14-1】 編寫一個用來測試連接
11、的應用程序,用來建立與當前目錄下的Microsoft Access 2002數(shù)據庫Student.mdb的連接。程序的設置界面如圖14-3所示,程序的運行界面如圖14-4所示。19圖14-3 程序設計界面 圖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ù)據集結果的命令。如Select語句22 【例14-2】 已知在應用程序當前目錄下,有一個名為Student.mdb的數(shù)據庫,該數(shù)據庫中有一個名為student的表,表中的數(shù)據如圖14-5所示。請使用Command對象執(zhí)行SQL命令向表中插入一個學生的信息,學生數(shù)據如下: 01010106
13、張和平 男 010101 1985-7-28 安徽無為 插入后,student表中的內容如圖14-6所示。 23圖14-5 插入前的student表中的數(shù)據 圖14-6 插入后的student表中的數(shù)據 243DataReader對象及其使用 ADO.NET的DataReader對象可以從數(shù)據庫中檢索只讀、只進的數(shù)據流,實現(xiàn)對數(shù)據源中的數(shù)據高速、只向前的訪問。(1)DataReader對象的常用屬性 FieldCount屬性 RecordsAffected屬性25(2)DataReader對象的常用方法 Read方法 格式:public bool Read(); 使DataReader對象前進
14、到下一條記錄 Close方法 格式:public void Close(); 關閉DataReader對象 Get方法 格式:public Get (int ordinal); 從ordinal指定的列中讀取數(shù)據26 【例14-3】 已知在應用程序當前目錄下,有一個名為Student.mdb的數(shù)據庫,該數(shù)據庫中有一個名為student的表。請編寫一個程序用來從該表中讀取所有男生的數(shù)據,并顯示出來。程序的設計界面如圖14-7所示,程序的運行界面如圖14-8所示。程序運行時單擊【連接并讀取】按鈕,將會把所有男生的數(shù)據顯示在窗體上。 27圖14-7 程序設計界面 圖14-8 程序運行界面 284Da
15、taAdapter對象及其使用 DataAdapter通過使用Command和Connection對象在數(shù)據源和數(shù)據集(DataSet)兩者之間構成一座橋梁。即結合DataSet使用,使得DataSet“連接”到數(shù)據源中,以便檢索和保存數(shù)據。 本質上DataAdapter是容器,它含有4個預先配置好的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ù)據以填充數(shù)據集 Update方法 格式1:public override int Update(DataSet dataSet); 把對參數(shù)dataSet所指定的數(shù)據集進行的插入、刪除等操作更新到數(shù)據源中。該方法用于數(shù)據集中只有一個表。 格式2:public override int Update(DataSet dataSet,string Table); 適用于數(shù)據集中存在多個
17、表的情況。305DataSet對象及其使用 (1)DataSet對象的組成 DataTable對象、DataRelation對象、DataColume對象、DataRow(2)DataSet對象的填充 調用DataAdapter對象的Fill方法,使用DataAdapter對象的SelectCommand的結果來填充DataSet對象。(3)DataSet對象的訪問 格式1:數(shù)據集對象名.Tables“數(shù)據表名”.Rowsn“列名” 格式2:數(shù)據集對象名.Tables“數(shù)據表名”.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ù)據 MyDs.Tables“Student”.Rows4“Native”=“江蘇南京”;(7)利用DataSet對象更新數(shù)據源 利用Da
19、taAdapter對象的Update方法。3233數(shù)據綁定在Windows窗體應用程序中,幾乎每個商業(yè)應用程序都需要從某類數(shù)據源中讀取信息,而實現(xiàn)這一功能的通常方式是采用數(shù)據綁定。數(shù)據綁定是指將控件的某些屬性值與數(shù)據集中的數(shù)據元素連接在一起,控件的屬性變化會反映到數(shù)據集中,反之也一樣。數(shù)據綁定的好處是可以大大簡化數(shù)據的展示,此外對綁定的統(tǒng)一管理可以使界面元件能同步更新,實現(xiàn)記錄向前向后瀏覽時的自動同步更新。34數(shù)據綁定有兩種類型的數(shù)據綁定:簡單綁定和復雜綁定。簡單數(shù)據綁定是指將一個控件和單個數(shù)據元素(如數(shù)據表的列值)進行綁定,大多數(shù)Windows窗體控件如文本框控件都具有這個能力。復雜數(shù)據綁定
20、指將一個控件和多個數(shù)據元素進行綁定,具有該能力的有DataGrid、ListBox和ComboBox等控件。35數(shù)據綁定對于控件的簡單數(shù)據綁定,編程實現(xiàn)時是直接指定該控件的DataBindings屬性,它是一個集合類型,存儲的是Binding類對象。只要調用DataBindings集合的Add方法即可加入新的綁定對象,如:textBox1.DataBindings.Add(Text, dataSet1, stuents.studentno); 或Binding newBinging = new Binding(Text, dataSet1, stuents.studentno);textBox1.DataBindings.Add(newBinding);36 【例14-6】 已知在應用程序當前目錄下,有一個名為Student.mdb的數(shù)據庫,該數(shù)據庫中有一個名為student的表,請編寫一個瀏
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計稅基礎施工方案
- 二零二五版電商直播團隊店面營業(yè)員合作協(xié)議范本3篇
- 2025年度個人旅游費用欠款合同樣本3篇
- 皮帶廊施工方案
- 墻裙油漆施工方案
- 白洋潮課程設計
- 慶春隧道施工方案
- 河道景觀道路施工方案
- 2025年新能源儲能技術投資入股分紅合同4篇
- 錐齒傳動軸課程設計
- 氣動調節(jié)閥調校
- 中考模擬考試化學試卷與答案解析(共三套)
- 新人教版五年級小學數(shù)學全冊奧數(shù)(含答案)
- 風電場升壓站培訓課件
- 收納盒注塑模具設計(論文-任務書-開題報告-圖紙)
- 博弈論全套課件
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 腦電信號處理與特征提取
- 高中數(shù)學知識點全總結(電子版)
- GB/T 10322.7-2004鐵礦石粒度分布的篩分測定
- 2023新譯林版新教材高中英語必修一重點詞組歸納總結
評論
0/150
提交評論