版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫應(yīng)用程序設(shè)計第1頁,課件共35頁,創(chuàng)作于2023年2月主要內(nèi)容ADO.NET概述;.NET數(shù)據(jù)提供者以O(shè)leDb模式、SqlClient模式建立數(shù)據(jù)庫連接的方法;通過SqlCommand、DataReader、DataAdapter、DataSet進行讀、寫、檢索SQLServer數(shù)據(jù)庫;利用數(shù)據(jù)控件通過綁定技術(shù)顯示數(shù)據(jù)庫中的數(shù)據(jù)。第2頁,課件共35頁,創(chuàng)作于2023年2月1、ADO.NET概述
ADO.NET是美國微軟公司最新推出.NET平臺中的一種數(shù)據(jù)訪問技術(shù),是專門為.NETFramework而設(shè)計的,是ADO的升級版本;ADO.NET集成了到.NETFramework中,可用于任何.NET語言,尤其是C#;ADO.NET包括所有的System.Data命名空間及其嵌套的命名空間。ADO.NET將成為構(gòu)建.NET數(shù)據(jù)庫應(yīng)用程序的基礎(chǔ)。
ADO.NET類庫中提供了用于數(shù)據(jù)連接、處理數(shù)據(jù)操作的類。System.Data名稱空間可以通過數(shù)據(jù)提供者(provider)與數(shù)據(jù)庫通信,ADO.NET對象允許通過組件連接到數(shù)據(jù)庫,在數(shù)據(jù)庫中進行檢索、編輯、刪除和插入數(shù)據(jù),并在程序中處理數(shù)據(jù)。ADO.NET支持已連接環(huán)境和非連接環(huán)境的數(shù)據(jù)訪問。第3頁,課件共35頁,創(chuàng)作于2023年2月1.1ADO.NET架構(gòu)ADO.NET架構(gòu)的兩個主要組件:DataProvider(數(shù)據(jù)提供者)DataSet(數(shù)據(jù)集)第4頁,課件共35頁,創(chuàng)作于2023年2月1.2ADO.NET訪問數(shù)據(jù)庫的模式1.ADO.NET訪問數(shù)據(jù)庫的模式主要前3種:OleDb模式:主要用于訪問OLEDB支持的數(shù)據(jù)庫,如Access或SQLServer6.x或更早版本)需在命名空間區(qū)域添加System.Data.OleDb命名空間;Odbc模式:主要用于ODBC所支持的數(shù)據(jù)庫,一般在Windows平臺下存在的數(shù)據(jù)庫都可以通過建立系統(tǒng)DSN來實現(xiàn)對數(shù)據(jù)庫的調(diào)用,需在命名空間區(qū)域添加System.Data.Odbc命名空間;SqlClient模式:對MSSQLServer的訪問更高效,需在命名空間區(qū)域添加System.Data.SqlClient命名空間;Oracle模式:對Oracle數(shù)據(jù)庫專用的訪問。第5頁,課件共35頁,創(chuàng)作于2023年2月1.2.NETFramework數(shù)據(jù)提供程序
.NETDataProvider核心類.NETFramework數(shù)據(jù)提供程序包括四個核心類,用于實現(xiàn)對數(shù)據(jù)庫的數(shù)據(jù)處理。(1)Connection對象數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫進行交互要在建立數(shù)據(jù)庫連接的基礎(chǔ)上進行。Connection對象成為連接對象,提供了對數(shù)據(jù)存儲中正在運行的事務(wù)(Transaction)的訪問技術(shù)。(2)Command對象Command對象用于執(zhí)行數(shù)據(jù)庫的命令操作,命令操作包括檢索(Select)、插入(Insert)、刪除(Delete)以及更新(Update)操作。(3)DataAdapter對象DataAdapter(數(shù)據(jù)適配器)對象在DataSet對象和數(shù)據(jù)源之間架起了一座“橋梁”。DataAdapter可以用數(shù)據(jù)源填充DataSet并解析更新。(4)DataReader對象數(shù)據(jù)流提供了高性能的、前向的數(shù)據(jù)存取機制。通過DataReader可以輕松而高效地訪問數(shù)據(jù)流。DataReader對象用于從數(shù)據(jù)庫中讀取由SELECT命令返回的只讀的數(shù)據(jù)流,在這個過程中一直保持與數(shù)據(jù)庫的連接。第6頁,課件共35頁,創(chuàng)作于2023年2月1.3DataSet數(shù)據(jù)集
ADO.NET的一個比較突出的特點是支持離線訪問,即在非連接環(huán)境下對數(shù)據(jù)進行處理,DataSet是支持離線訪問的關(guān)鍵對象,它將數(shù)據(jù)存儲在緩存中。DataSet對象不關(guān)心數(shù)據(jù)源的類型,它將信息以表的形式存放。DataSet對象是非連接存儲和處理關(guān)系的基礎(chǔ)。
第7頁,課件共35頁,創(chuàng)作于2023年2月1.4ADO.NET的設(shè)計目標(biāo)
簡單地訪問關(guān)系數(shù)據(jù)
可擴展性
ADO.NET具有良好的可擴展性——它為.NET數(shù)據(jù)提供者插件提供了框架,這些提供者可用于從任何數(shù)據(jù)源讀寫數(shù)據(jù)支持多層應(yīng)用程序
ADO.NET使用開放的XML標(biāo)準(zhǔn)格式在層之間通信,允許數(shù)據(jù)通過Internet防火墻來傳遞,并允許以非Microsoft技術(shù)實現(xiàn)一層或多層統(tǒng)一XML和關(guān)系數(shù)據(jù)訪問
XML文檔具有分層的數(shù)據(jù)結(jié)構(gòu)。.NET技術(shù)是以XML為基礎(chǔ)構(gòu)建的,ADO.NET可以擴展.NET的用法,溝通行、列和XML文檔中的關(guān)系數(shù)據(jù)第8頁,課件共35頁,創(chuàng)作于2023年2月2、ADO.NET對象ADO.NET類之間的關(guān)系第9頁,課件共35頁,創(chuàng)作于2023年2月提供者對象
提供者對象就是指在每一個.NET數(shù)據(jù)提供者中定義的對象,其名稱前帶有特定提供者的名稱連接對象命令對象CommandBuilder對象DataReader對象DataAdapter對象第10頁,課件共35頁,創(chuàng)作于2023年2月2.1Connection對象
在C#.NET中,通過Connection對象實現(xiàn)數(shù)據(jù)連接,并且在使用過程中,根據(jù)不同的數(shù)據(jù)庫的類型使用不同的Connection控件。在ADO.NETConnection類中有兩個子類:一個是SqlConnection;另一個是OleDbConnection。
第11頁,課件共35頁,創(chuàng)作于2023年2月2.1Connection對象
1.Connection對象常用屬性有:ConnectionString屬性:用來指定要連接的數(shù)據(jù)源。在ConnectionString屬性中,需要使用很多參數(shù)。如:DataSource用來指明數(shù)據(jù)源;InitialCatalog用來指明數(shù)據(jù)庫;IntegratedSecurity用來指明集成安全等。ConnectionTimeout屬性:獲取在嘗試建立連接時終止嘗試并生成錯誤之前所等待的時間。返回結(jié)果:等待連接打開的時間(以秒為單位)。默認(rèn)值為15秒。Database屬性:獲取當(dāng)前數(shù)據(jù)庫或連接打開后要使用的數(shù)據(jù)庫的名稱。返回結(jié)果:當(dāng)前數(shù)據(jù)庫的名稱或連接打開后要使用的數(shù)據(jù)庫的名稱。默認(rèn)值為空字符串。DataSource屬性:獲取要連接的數(shù)據(jù)源實例的名稱。第12頁,課件共35頁,創(chuàng)作于2023年2月2.1Connection對象
2.Connection對象常用方法Connection對象最常用的方法有Open和Close方法。Open()方法:該方法用于打開由ConnectionString屬性指定的數(shù)據(jù)源連接。Close方法():該方法用于斷開由ConnectionString屬性指定的數(shù)據(jù)源連接。
第13頁,課件共35頁,創(chuàng)作于2023年2月2.1Connection對象
3.Connection對象的創(chuàng)建
常用的連接數(shù)據(jù)庫的格式:1)采用SqlServer身份驗證
stringconstring=“server=計算機名;uid=用戶名;pwd=密碼;database=數(shù)據(jù)庫名稱";SqlConnectionconnection=newSqlConnection(constring);2)集成的Windows身份驗證語法Stringconstring="server=計算機名;database=數(shù)據(jù)庫名稱;integratedsecurity=SSPI";SqlConnectionconnection=newSqlConnection(constring);第14頁,課件共35頁,創(chuàng)作于2023年2月OleDbConnection對象的創(chuàng)建方法和SqlConnection對象的創(chuàng)建方法類似第15頁,課件共35頁,創(chuàng)作于2023年2月2.2Command對象
通過編程的方法創(chuàng)建一個Command對象:SqlCommandcommand=newSqlCommand();或OleDbCommandcommand=newOleDbCommand();第16頁,課件共35頁,創(chuàng)作于2023年2月2.2用控件實現(xiàn)數(shù)據(jù)庫的連接1.添加控件若連接對象不在工具箱,則添加方法:工具選擇工具箱項.NETFramework組件選擇SqlConnection控件和SqlCommand控件添加;2.設(shè)置SqlConnection控件的ConnectionString屬性;設(shè)置SqlCommand控件的Connection屬性為以上的SqlConnection控件;3.OleDbConnection控件和OleDbCommand控件的用法同SqlConnection控件和SqlCommand控件。第17頁,課件共35頁,創(chuàng)作于2023年2月2.3DataAdapter對象
DataAdapter對象是ADO.NET新增加。在ADO.NETDataAdapter類中有兩個子類:一個是SqlDataAdapter類;另一個是OleDbDataAdapter類。DataAdapter對象包含有SelectCommand、InsertCommand、UpdateCommand和DelectCommand四個屬性,用來定義處理數(shù)據(jù)存儲中數(shù)據(jù)的命令,并且每個命令都是對Command對象的一個引用,可以共享同一個數(shù)據(jù)源。第18頁,課件共35頁,創(chuàng)作于2023年2月2.3DataAdapter對象
通過編程的方法創(chuàng)建一個DataAdapter對象:SqlDataAdapterdataAdapter=newSqlDataAdapter();或OleDbDataAdapterdataAdapter=newOleDbDataAdapter();。第19頁,課件共35頁,創(chuàng)作于2023年2月2.4DataReader對象
DataReader對象用于對數(shù)據(jù)庫的操作。在ADO.NETDataReader類中有兩個子類:一個是SqlDataReader類;另一個是OleDbDataReader類。通過編程的方法創(chuàng)建一個DataReader對象:SqlDataReaderreader=command.ExecuteReader();或OleDbDataReaderreader=command.ExecuteReader();第20頁,課件共35頁,創(chuàng)作于2023年2月2.4DataReader對象例在窗體上放置一個ListBox和一個Button;先添加sqlConnection控件和sqlCommand控件,并設(shè)置好屬性。Button的單擊事件代碼為:
第21頁,課件共35頁,創(chuàng)作于2023年2月2.4DataReader對象
sqlConnection1.Open();SqlDataReaderreader=sqlCommand1.ExecuteReader();listBox1.ColumnWidth=256;while(reader.Read()){listBox1.Items.Add(reader["sno"].ToString());
//或者listBox1.Items.Add(reader.GetString(0));listBox1.Items.Add(reader["sname"].ToString());listBox1.Items.Add(reader["sbirthday"].ToString());listBox1.Items.Add(reader["sdept"].ToString());listBox1.Items.Add(reader["speciality"].ToString());
}sqlConnection1.Close();第22頁,課件共35頁,創(chuàng)作于2023年2月2.4DataReader對象如不用控件,用代碼連接:
stringconstring="server=(local);database=student;uid=sa;pwd=sa";
SqlConnectionconnection1=newSqlConnection(constring);connection1.Open();stringcommandStr="Select*Fromstuinf";SqlCommandsqlcommd=newSqlCommand(commandStr);sqlcommd.Connection=connection1;SqlDataReaderreader=sqlcommd.ExecuteReader();//后面的同上第23頁,課件共35頁,創(chuàng)作于2023年2月2.4DataReader對象listBox1.ColumnWidth=256;while(reader.Read()){listBox1.Items.Add(reader["sno"].ToString());
//或者listBox1.Items.Add(reader.GetString(0));listBox1.Items.Add(reader["sname"].ToString());listBox1.Items.Add(reader["sbirthday"].ToString());listBox1.Items.Add(reader["sdept"].ToString());listBox1.Items.Add(reader["speciality"].ToString());
}sqlConnection1.Close();第24頁,課件共35頁,創(chuàng)作于2023年2月2.4數(shù)據(jù)集對象
數(shù)據(jù)集對象位于System.Data命名空間中,用于定義ADO.NET的斷開的、客戶端的對象,包括DataSet、DataTable、DataRow、DataColumn和DataRelation等。DataSet是數(shù)據(jù)集對象中的首要對象,此對象表示一組相關(guān)表;DataTable對象代表DataSet中的一個表;DataTable對象的Rows和Columns分別是DataRow和DataColumn對象,可用于訪問DataTable表中的行和列;DataRelation對象代表通過共享列而發(fā)生關(guān)系的兩個表之間的關(guān)系;第25頁,課件共35頁,創(chuàng)作于2023年2月2.4數(shù)據(jù)集對象
DataSet對象的創(chuàng)建可以通過工具欄中的控件實現(xiàn);通過菜單“數(shù)據(jù)”|“生成數(shù)據(jù)集”來實現(xiàn);或者選擇DataAdapter對象,單擊右上角的黑三角(智能標(biāo)記),在下拉表中選擇“生成數(shù)據(jù)集…”,這時,會彈出“生成數(shù)據(jù)集”對話框。如圖14-15所示。
第26頁,課件共35頁,創(chuàng)作于2023年2月2.4數(shù)據(jù)集對象
填充DataSet對象:
DataSet對象是一個必須填充的容器,填充方法有多種:調(diào)用DataAdapter的Fill方法、手工填充、復(fù)制或合并其它DataSet的數(shù)據(jù)。我們這里介紹使用DataAdapter的Fill方法填充DataSet對象。第27頁,課件共35頁,創(chuàng)作于2023年2月2.4數(shù)據(jù)集對象在窗體上添加一個標(biāo)簽,一個DataGridView控件,使用DataAdapter的Fill方法填充DataSet對象第28頁,課件共35頁,創(chuàng)作于2023年2月2.4數(shù)據(jù)集對象privatevoidForm1_Load(objectsender,EventArgse){
stringconstring=
"server=(local);database=student;uid=sa;pwd=sa";
SqlConnectionconnection=newSqlConnection(constring);connection.Open();stringsqlstr="select*fromstuinf";SqlDataAdaptersqladp=new
SqlDataAdapter(sqlstr,connection);DataSetdts=newDataSet();sqladp.Fill(dts,"stuinf");this.dataGridView1.DataSource=dts.Tables["stuinf"];}第29頁,課件共35頁,創(chuàng)作于2023年2月3、使用數(shù)據(jù)庫
在C#代碼中使用ADO.NET的第一步就是引用System.Data命名空間,該命名空間中含有所有的ADO.NET類;接著,需要根據(jù)數(shù)據(jù)源的類型不同,而引用相應(yīng)的數(shù)據(jù)提供者。SQLServer.NET數(shù)據(jù)提供者:SQLServer數(shù)據(jù)庫,使用using指令引用System.Data.SqlClient。Oracle.NET數(shù)據(jù)提供者:Oracle數(shù)據(jù)庫,內(nèi)置Oracle.NET驅(qū)動程序是最佳選擇,System.Data.OracleClient;另外,Oracle本身也提供了一個.NET數(shù)據(jù)提供者,Oracle.DataAccess.ClientOLEDB.NET提供者:MicrosoftAccess,System.Data.OleDbODBC.NET數(shù)據(jù)提供者:如果數(shù)據(jù)源沒有內(nèi)置的或OLEDB提供者,則可以使用ODBC.NET數(shù)據(jù)提供者System.Data.Odbc其他內(nèi)置的.NET數(shù)據(jù)提供者:如果數(shù)據(jù)庫有專用的內(nèi)置.NET數(shù)據(jù)提供者,就可以使用它第30頁,課件共35頁,創(chuàng)作于2023年2月3.1創(chuàng)建數(shù)據(jù)庫
第31頁,課件共35頁,創(chuàng)作于2023年2月3.2DataGridView控件
DataGridView控件使程序員可在自定義的網(wǎng)格中顯示數(shù)據(jù)。
DataGridView控件主要屬性:ReadOnly:該值指示用戶是否可以編輯System.Windows.
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寵物安全防護措施考核試卷
- 商業(yè)地產(chǎn)購物中心數(shù)字化營銷推廣策略
- 創(chuàng)業(yè)企業(yè)風(fēng)險防控體系構(gòu)建考核試卷
- 塑料零件的應(yīng)力分析與優(yōu)化設(shè)計考核試卷
- 寶石加工中的能源管理與節(jié)能減排考核試卷
- 機械制造行業(yè)智能化生產(chǎn)管理與工藝改進方案
- 客運索道緊急救援設(shè)備操作考核試卷
- 2024年度房地產(chǎn)項目營銷代理合同模板3篇
- 2024年玻璃藝術(shù)品定制購銷合同
- 農(nóng)業(yè)科學(xué)與農(nóng)田土壤保護考核試卷
- 《中國喪葬禮儀》課件
- 中國高血壓防治指南(2024年修訂版)解讀課件
- 國家開放大學(xué)《統(tǒng)計與數(shù)據(jù)分析基礎(chǔ)》形考任務(wù)1-5答案
- 2024時事政治考試題庫(100題)
- 【新教材】統(tǒng)編版(2024)七年級上冊語文期末復(fù)習(xí)課件129張
- 基于汽車發(fā)動機飛輪的設(shè)計與制造
- 上海市安全生產(chǎn)管理讀本試習(xí)題(考試專用)
- 實驗儀器、器材配備情況統(tǒng)計表
- 課題組內(nèi)研討活動及會議記錄
- 小學(xué)科學(xué)實驗室儀器名稱匯總
- 山東昌樂二中“271高效課堂”教學(xué)模式
評論
0/150
提交評論