版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第5章
數(shù)據(jù)訪問和數(shù)據(jù)綁定
本章學(xué)習(xí)目標(biāo)ADO.NET數(shù)據(jù)庫訪問ADO.NET數(shù)據(jù)庫連接數(shù)據(jù)綁定控件LinQ綁定技術(shù)用LINQ實現(xiàn)數(shù)據(jù)訪問5.1ADO.NET數(shù)據(jù)訪問5.1.1ADO.NET概述5.1.2建立數(shù)據(jù)庫連接5.1.3連線模式訪問數(shù)據(jù)庫5.1.4離線模式訪問數(shù)據(jù)5.1.1ADO.NET概述ADO.NET的名稱起源于ADO(ActiveXDataObjects),是一個COM組件庫,供了平臺互用性和可伸縮的數(shù)據(jù)訪問。ADO.NET是一組用于和數(shù)據(jù)源進行交互的面向?qū)ο箢悗?。通常情況下,ADO.NET允許和不同類型的數(shù)據(jù)源以及數(shù)據(jù)庫進行交互,可以是數(shù)據(jù)庫,也可以是文本文件、Excel表格或者XML文件,并且集成了語言集成查詢(LINQ)功能。ADO.NET的體系結(jié)構(gòu)ADO.NET主要的類包括有:Connection:數(shù)據(jù)庫連接對象Command:執(zhí)行數(shù)據(jù)操作命令Parameter:數(shù)據(jù)操作命令中的參數(shù)DataReader:以只讀方式讀取數(shù)據(jù)Transaction:用以實現(xiàn)事務(wù)DataAdapter:為數(shù)據(jù)庫容器加載數(shù)據(jù)庫,將更新后的數(shù)據(jù)傳回數(shù)據(jù)庫DataSet:數(shù)據(jù)容器,可以容納多個DataTable和關(guān)系DataTable:數(shù)據(jù)容器,由DataRow和DataColumn構(gòu)成DataRow:DataTable中一行記錄DataColumn:DataTable中的列DataView:為DataTable建立多種視圖DataRelation:表示多個DataTabele之間的關(guān)系Constraint:表示DataTable的主鍵和外鍵約束5.1.2建立數(shù)據(jù)庫連接OLEDBConnection:用于OLEDB的數(shù)據(jù)庫執(zhí)行連接SqlConnection:用于對SQLServer數(shù)據(jù)庫執(zhí)行連接OdbcConnection:用于支持ODBC的數(shù)據(jù)庫執(zhí)行連接OracleConnection:用于對Oracle數(shù)據(jù)庫執(zhí)行連接本小節(jié)中主要講解
關(guān)于SQLServer數(shù)據(jù)庫連接連接不同的數(shù)據(jù)庫,ADO.NET中提供了不同的類。建立SQLServer數(shù)據(jù)庫連接操作設(shè)置數(shù)據(jù)連接字符串,創(chuàng)建SqlConnection對象,創(chuàng)建成功打開數(shù)據(jù)連接關(guān)閉數(shù)據(jù)連接連接字符串屬性使用windows身份驗證的連接字符串stringConStr="server=(local)\\SQLEXPRESS;DataBase=test;integratedsecurity=SSPI“server表示運行SQLSever的計算機名,如果數(shù)據(jù)是express版的,要加在計算機名后加上\\SQLEXPRESS,本地可以用local替換,DataBase表示所使用的數(shù)據(jù)庫名使用SQLServer身份驗證的連接字符串stringConStr=“server=(local)\\SQLEXPRESS;userID=sa;pwd=sa123;DataBase=test;”server同上,userID為連接數(shù)據(jù)庫的用戶名,pwd為連接數(shù)據(jù)庫密碼。注:為了安全,一般采用windows身份驗證連接字符串,或在加密Web.config文件中的連接字符串。SqlConnection類SqlConnection類,用來連接到數(shù)據(jù)庫和管理數(shù)據(jù)庫事務(wù),其常用屬性如下:SqlConnection常用的方法[例5-1]應(yīng)用SqlConnection連接數(shù)據(jù)庫案例要點:1)建立連接字符串publicstaticstringsqlStr="server=localhost;user=sa;pwd=sa123456;database=Test";2)創(chuàng)建SqlConnection對象SqlConnectionconStr=newSqlConnection(sqlStr);3)在按鈕的點擊事件中,分別打開或關(guān)閉數(shù)據(jù)連接conStr.Open();//打開數(shù)據(jù)連接conStr.Close();//關(guān)閉數(shù)據(jù)連接詳見書[例5-1]5.1.3連線模式訪問數(shù)據(jù)庫使用SqlDataReader對象讀取數(shù)據(jù)庫的一般步驟:創(chuàng)建連接數(shù)據(jù)庫打開數(shù)據(jù)庫連接使用SqlCommand對象的ExecuteReader方法執(zhí)行CommandText中的命令,并把返回的結(jié)果放SqlDataReader對象中。處理數(shù)據(jù)庫查詢結(jié)果關(guān)閉數(shù)據(jù)庫SqlDataReader對象使用SqlDataReader對象時的注意事項如下:讀取數(shù)據(jù)時,SqlConnection對象必須處于打開狀態(tài)必須通過SqlCommand對象的ExecuteReader()方法,產(chǎn)生SqlDataReader對象的實例只能向下順序讀取記錄,且無法直接獲知讀取記錄的總數(shù)SqlDataReader對象管理的查詢結(jié)果是只讀的。使用SqlDataReader對象時的注意事項(1)讀取數(shù)據(jù)時,SqlConnection對象必須處于打開狀態(tài)。(2)必須通過SqlCommand對象的ExecuteReader()方法,產(chǎn)生SqlDataReader對象的實例。(3)只能按向下的順序逐條讀取記錄,不能隨機讀取,且無法直接獲知讀取記錄的總數(shù)。(4)SqlDataReader對象管理的查詢結(jié)果是只讀的,不能修改。[例5-2]應(yīng)用SqlDataReader進行連線模式訪問數(shù)據(jù)案例要點:1)建立連接,打開數(shù)據(jù)庫連接,同例5-12)
通過SqlConnection對象,創(chuàng)建SqlCommand對象SqlCommandcmd=conStr.CreateCommand();3)設(shè)置查詢語句
cmd.CommandText="SELECT*FROMbookInfo";4)執(zhí)行查詢語句,將查詢結(jié)果放入SqlDataReader對象SqlDataReaderreader=cmd.ExecuteReader();5)讀出SqlDataReader對象中的數(shù)據(jù)while(reader.Read()){stringname=reader.GetString(reader.GetOrdinal("name"));intISDN=reader.GetInt32(reader.GetOrdinal("ISDN"));}6)關(guān)閉數(shù)據(jù)連接注意:在讀出SqlDataReader對象中的數(shù)據(jù)之前,不能關(guān)閉數(shù)據(jù)連接詳見書[例5-2][例5-2]應(yīng)用SqlDataReader進行連線模式訪問數(shù)據(jù)5.1.4離線模式訪問數(shù)據(jù)離線模式訪問數(shù)據(jù),主要與DataAdapter和DataSet兩個類有關(guān)。使用DataAdapter的過程中,連接的打開和關(guān)閉是自動完成的。DataAdapter對象通常稱為數(shù)據(jù)適配器,作用是作為數(shù)據(jù)源與DataSet對象之間的橋梁,提供了雙向的數(shù)據(jù)傳輸機制,可以將查詢結(jié)果集傳送到DataSet對象的數(shù)據(jù)表中,也可以執(zhí)行插入、更新、刪除,更新數(shù)據(jù)源。本節(jié)以SQLServer為例。離線訪問數(shù)據(jù)對象模型屬性說
明SelectCommand獲取或設(shè)置用來從數(shù)據(jù)源刪除數(shù)據(jù)行的SQL命令,屬性值必須為CommandInsertCommand獲取或設(shè)置將數(shù)據(jù)行插入數(shù)據(jù)源的SQL命令,屬性值為Command對象,使用原則與DeletCommand屬性一樣DeleteCommand獲取或設(shè)置用來從數(shù)據(jù)源刪除數(shù)據(jù)行的SQL命令,屬性值必須為Command對象,并且此屬性只有在調(diào)用Update方法且從數(shù)據(jù)源刪除數(shù)據(jù)行時使用,其主要用途是告知DataAdapter對象如何從數(shù)據(jù)源刪除數(shù)據(jù)行UpdateCommand獲取或設(shè)置用來從數(shù)據(jù)源選取數(shù)據(jù)行的SQL命令,屬性值為Command對象
SqlDataAdapter類的主要屬性SqlDataAdapter類的主要方法方法名說明Dispose()釋放由Component占用的資源Equals(Object)確定指定的Object是否等于當(dāng)前的ObjectFill()填充DataSet或DataTableFinalize()在通過垃圾回收將Component回收之前,釋放非托管資源并執(zhí)行其他清理操作GetType()獲取當(dāng)前實例的TypeUpdate()為DataSet中每個已插入、已更新或已刪除的行調(diào)用相應(yīng)的INSERT、UPDATE或DELETE語句[例5-3]應(yīng)用DataAdapter、DataSet對象進行離線模式查詢數(shù)據(jù)案例要點:1)創(chuàng)建SqlDataAdapter對象stringcon_Str=“server=DESKTOP-QKGAT36;user=sa;pwd=sa123456;database=Test”;//設(shè)置連接字符串stringsql=“SELECT*FROMBook_Info”;//設(shè)置查詢語句SqlDataAdapteradptr=newSqlDataAdapter(sql,con_Str);2)新建DataSet對象,通過SqlDataAdapter對象
加載數(shù)據(jù)DataSetDS=newDataSet();
adptr.Fill(DS,"tt");[例5-3]應(yīng)用DataAdapter、DataSet對象進行離
線模式查詢數(shù)據(jù)3)
通過DataSet創(chuàng)建DataTableReader對象DataTableReaderrdr=DS.CreateDataReader();4)
從DataTableReader對象中讀出數(shù)據(jù)記錄while(rdr.Read())
{for(inti=0;i<rdr.FieldCount;i++)
{Label1.Text+=rdr.GetName(i)+":"+
rdr.GetValue(i)+" ";
}//讀出字段名、字段值Label1.Text+="<br/>";
}詳見書[例5-3]5.2數(shù)據(jù)綁定技術(shù)與綁定控件5.2.1數(shù)據(jù)綁定基礎(chǔ)5.2.2數(shù)據(jù)源控件5.2.3數(shù)據(jù)綁定控件5.2.1數(shù)據(jù)綁定基礎(chǔ)數(shù)據(jù)綁定技術(shù)就是把已經(jīng)打開的數(shù)據(jù)集中某個或者某些字段綁定到組件的某些屬性上面的一種技術(shù)。具體而言,就是把已經(jīng)打開數(shù)據(jù)的某個或者某些字段綁定到Text組件、GridView組件、ListView等組件上的能夠顯示數(shù)據(jù)5.2.2數(shù)據(jù)源控件數(shù)據(jù)源控件實現(xiàn)了豐富的數(shù)據(jù)檢索和更新功能,包括查詢、排序、分頁、篩選、更新、刪除以及插入等,UI控件能夠自動利用這些功能而不需要代碼有7種數(shù)據(jù)源控件,如下圖所示:[例5-4]應(yīng)用SqlDataSource控件創(chuàng)建數(shù)據(jù)源案例要點:1)將工具箱中的SqlDataSource控件拖到視圖2)點擊右上角處的小三角符號,彈出SqlDataSource任務(wù)框,再點擊“配置數(shù)據(jù)源”3)添加連接時,注意數(shù)據(jù)庫服務(wù)信息正確案例要點:[例5-4]應(yīng)用SqlDataSource控件創(chuàng)建數(shù)據(jù)源4)配置查詢后,還可以測試查詢是否正確詳見書[例5-4]5.2.3數(shù)據(jù)綁定控件工具箱中的數(shù)據(jù)綁定控件如圖所示:本節(jié)通過案例介紹GridView控件、ListView控件、DataPager控件[例5-5]
GridView數(shù)據(jù)綁定控件實例案例要點:1)配置數(shù)據(jù)源,同例5-42)在“字段對話框”,配置GridView顯示屬性。[例5-5]
GridView數(shù)據(jù)綁定控件實例屬性事件在控件的屬性框中設(shè)置GridView控件的屬性和詳見書[例5-5][例5-6]
ListView控件和DataPager控件應(yīng)用實例1)配置數(shù)據(jù)源,同例5-42)在配置ListView對話框中,配置list顯示屬性3)設(shè)置list列字段名修改設(shè)計視圖中的源代碼中<LayoutTemplate>區(qū)的代碼,其修改如下:<trrunat="server"style=""><thrunat="server">ISDN</th><thrunat="server">書名</th><thrunat="server">作者</th><thrunat="server">出版社</th></tr>4)通過DataPager控件實現(xiàn)分頁[例5-6]
ListView控件和DataPager控件應(yīng)用實例詳見書[例5-6]5.3使用LINQ5.3.1LINQ技術(shù)基礎(chǔ)5.3.2LINQDataSource數(shù)據(jù)源控件5.3.3使用LINQ實現(xiàn)數(shù)據(jù)訪問5.3.1LINQ技術(shù)基礎(chǔ)LINQ,語言集成查詢(LanguageIntegratedQuery)是一組用于c#和VisualBasic語言的擴展。它允許編寫C#或者VisualBasic代碼以查詢數(shù)據(jù)庫相同的方式操作內(nèi)存數(shù)據(jù)。LINQ可以查詢或者操作任何形式的數(shù)據(jù),如對象(集合、數(shù)組、字符串等)、關(guān)系(關(guān)系數(shù)據(jù)庫、ADO.NET數(shù)據(jù)集等),以及XMLLINQ框架LINQ語法LINQ查詢語法跟SQL查詢語法很相似,表達式必須以from子句開始,以select或group子句結(jié)束,中間可以包含一個或多個from、where、orderby、group、join、let等子句from子句:指定查詢操作的數(shù)據(jù)源和范圍變量select子句:指定查詢結(jié)果的類型和表現(xiàn)形式where子句:指定篩選元素的邏輯條件group子句:對查詢結(jié)果進行分組orderby子句:對查詢結(jié)果進行排序join子句:連接多個查詢操作的數(shù)據(jù)源let子句:引入用于存儲查詢表達式中的子表達式結(jié)果的范圍變量into子句:提供一個臨時標(biāo)識符,該標(biāo)識符可以在join、group或select子句中引用5.3.2LINQDataSource數(shù)據(jù)源控件LinQDataSource是ASP.NET4.0中引入的一個數(shù)據(jù)源控件,該控件與SqlDataSource控件相似LinQDataSource與數(shù)據(jù)庫中的數(shù)據(jù)進行交互時,不會將LinQDataSource控件直接連接到數(shù)據(jù)庫,而是與表示數(shù)據(jù)庫和表的實體類進行交互5.3.3使用LINQ實現(xiàn)數(shù)據(jù)訪問目前為止LINQ所支持的數(shù)據(jù)源有SQLServer、Oracle、XML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)以及內(nèi)存中的數(shù)據(jù)集合本節(jié)中主要以兩個實例,來介紹LINQ實現(xiàn)數(shù)據(jù)訪問應(yīng)用LinQ查詢語句從數(shù)組中查詢相關(guān)數(shù)據(jù)應(yīng)用LINQ從SQL中訪問、插入、刪除數(shù)據(jù)操作[例5-7]應(yīng)用LinQ查詢語句從數(shù)組中查詢相關(guān)數(shù)據(jù)案例要點:1)
通過LinQ查詢語句,將查詢結(jié)果放到var對象中varvalue=fromvinarraywherev%4==0orderbyvascendingselectv;2)讀出LINQ查詢結(jié)果foreach(varvinvalue){Response.Write(v.ToString()+"<br>");}詳見書[例5-7][例5-8]應(yīng)用LINQ從SQL中訪問、插入、刪除數(shù)據(jù)操作案例要點:1)新建LINQtoSQL數(shù)據(jù)連接上下文,自動生成BOOKDataContext類、Book_Info類2)創(chuàng)建BOOKDataContext類、Book_InfoBOOKDataContextdb=newBOOKDataContext();Book_Infobook_add=newBook_Info
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖北國際物流機場有限公司招聘筆試參考題庫含答案解析
- 2025年山東威海城建集團有限公司招聘筆試參考題庫含答案解析
- 2025年度個人借款合同模板可打印參考11篇
- 2025年國家電網(wǎng)通 用航空有限公司招聘筆試參考題庫含答案解析
- 2025年中國公路車輛機械有限公司招聘筆試參考題庫含答案解析
- 二零二五年度苗木種植基地生態(tài)旅游開發(fā)合同4篇
- 二零二五年度門崗智能化服務(wù)外包聘用合同4篇
- 二零二五版預(yù)制混凝土構(gòu)件買賣合同規(guī)范文本3篇
- 云南醫(yī)藥健康職業(yè)學(xué)院《影視作品》2023-2024學(xué)年第一學(xué)期期末試卷
- 云南錫業(yè)職業(yè)技術(shù)學(xué)院《電子商務(wù)安全與支付》2023-2024學(xué)年第一學(xué)期期末試卷
- 餐飲行業(yè)智慧餐廳管理系統(tǒng)方案
- 2025年度生物醫(yī)藥技術(shù)研發(fā)與許可協(xié)議3篇
- 電廠檢修安全培訓(xùn)課件
- 殯葬改革課件
- 2024企業(yè)答謝晚宴會務(wù)合同3篇
- 雙方個人協(xié)議書模板
- 車站安全管理研究報告
- 瑪米亞RB67中文說明書
- 植物和五行關(guān)系解說
- 滬教牛津版初中英語七年級下冊全套單元測試題
- 因式分解法提公因式法公式法
評論
0/150
提交評論