數(shù)據(jù)庫高級應(yīng)用_第1頁
數(shù)據(jù)庫高級應(yīng)用_第2頁
數(shù)據(jù)庫高級應(yīng)用_第3頁
數(shù)據(jù)庫高級應(yīng)用_第4頁
數(shù)據(jù)庫高級應(yīng)用_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C#數(shù)據(jù)庫系統(tǒng)軟件開發(fā)數(shù)據(jù)庫高級應(yīng)用C#數(shù)據(jù)庫開發(fā)技術(shù)基礎(chǔ)數(shù)據(jù)庫開發(fā)技術(shù)基礎(chǔ)1系統(tǒng)窗體開發(fā)系統(tǒng)窗體開發(fā)2系統(tǒng)登錄及權(quán)限管理系統(tǒng)登錄及權(quán)限管理3統(tǒng)計查詢統(tǒng)計查詢4報表和打印報表和打印5系統(tǒng)完善系統(tǒng)完善6LINQ技術(shù)技術(shù)7 目錄目錄數(shù)據(jù)庫高級應(yīng)用1.1 ADO.NET基礎(chǔ)基礎(chǔ)1.2 用 ADO.NET 連接數(shù)據(jù)庫1.3 用 ADO.NET 查詢和操作數(shù)據(jù)庫1.4 用 DataGridView 顯示和操作數(shù)據(jù)庫第第1章章 C#數(shù)據(jù)庫開發(fā)基礎(chǔ)數(shù)據(jù)庫開發(fā)基礎(chǔ)第第1節(jié)節(jié) ADO.NET 基礎(chǔ)ADO.NET 簡介ADO.NET 結(jié)構(gòu).NET Framework 數(shù)據(jù)提供程序ADO.NET DataSet總結(jié)

2、內(nèi)容概述內(nèi)容概述ADO.NET的名稱起源于ADO(ActiveX Data Objects)表明在.NET編程環(huán)境中優(yōu)先使用的數(shù)據(jù)訪問接口一組向 .NET 程序員公開數(shù)據(jù)訪問服務(wù)的類提供了對關(guān)系數(shù)據(jù)、XML 和應(yīng)用程序數(shù)據(jù)的訪問是.NET Framework 中不可缺少的一部分ADO.NET ADO.NET 簡介簡介兩個組件:.NET Framework 數(shù)據(jù)提供程序DataSet關(guān)系圖ADO.NET ADO.NET 結(jié)構(gòu)結(jié)構(gòu)關(guān)系圖關(guān)系圖.NET Framework 數(shù)據(jù)提供程序是專門為數(shù)據(jù)處理以及快速地只進、只讀訪問數(shù)據(jù)而設(shè)計的組件。ConnectionConnectionCommand C

3、ommand DataAdapterDataAdapterDataReader DataReader .NET Framework .NET Framework 數(shù)據(jù)提供程序數(shù)據(jù)提供程序是開啟程序和數(shù)據(jù)庫之間的連結(jié)沒有利用連結(jié)對象將數(shù)據(jù)庫打開,是無法從數(shù)據(jù)庫中取得數(shù)據(jù)的這個對象在ADO.NET的最底層可以自己產(chǎn)生這個對象,或是由其它的對象自動產(chǎn)生說明:在連接數(shù)據(jù)庫時,要根據(jù)使用數(shù)據(jù)庫的不同,引入不同的命名空間,然后使用命名空間中指定的連接類來創(chuàng)建數(shù)據(jù)庫連接對象。Connection Connection 對象對象12/1/2021實例操作:實例操作:1、利用SQL Server建立一數(shù)據(jù)庫,并

4、建立相應(yīng)的表;2、利用VS2010C#創(chuàng)建一windows應(yīng)用程序,在窗體中添加一TextBox控件、一個Button控件和一個Label控件,分別用于輸入要連接的數(shù)據(jù)庫名稱、執(zhí)行連接數(shù)據(jù)庫的操作以及顯示數(shù)據(jù)庫的連接狀態(tài),然后引入System.Data.SqlClient命名空間,使用SqlConnection類連接數(shù)據(jù)庫。架構(gòu)在Connection對象上向數(shù)據(jù)庫發(fā)出操作指令(增、刪、改、查)呼叫存在數(shù)據(jù)庫中的預(yù)存程序等透過連結(jié)到數(shù)據(jù)源的Connection對象來下命令Connection連結(jié)到哪個數(shù)據(jù)庫,Command對象的命令就下到哪里Command Command 對象對象12/1/20

5、21執(zhí)行執(zhí)行SQLSQL語句的實例操作語句的實例操作1、執(zhí)行SQL語句,返回結(jié)果集中的第一行的第一列ExecuteScalar方法2、執(zhí)行SQL語句,返回受影響的行數(shù)ExecuteNonQuery方法3、執(zhí)行SQL語句,生成一個包含數(shù)據(jù)的SqlDataReader對象實例ExecuteReader方法架構(gòu)在Command對象上,并提供了許多配合DataSet使用的功能在數(shù)據(jù)源于DataSet之間執(zhí)行數(shù)據(jù)傳輸?shù)墓ぷ魉梢酝高^Command對象下達命令后,并將取得的數(shù)據(jù)放入DataSet對象中DataAdapter DataAdapter 對象對象一次一筆向下循序的讀取數(shù)據(jù)源中的數(shù)據(jù)這些數(shù)據(jù)是只讀

6、的,并不允許作其它的操作節(jié)省資源而且效率很好可以降低網(wǎng)絡(luò)的負載DataReader DataReader 對象對象這個對象架構(gòu)在DataAdapter對象上可以視為一個暫存區(qū)(Cache)可以把從數(shù)據(jù)庫中所查詢到的數(shù)據(jù)保留起來可以將整個數(shù)據(jù)庫顯示出來可以儲存多個Table可以透過DataAdapter對象取得表結(jié)構(gòu)可以記錄數(shù)據(jù)表間的關(guān)聯(lián)本身不具備和數(shù)據(jù)源溝通的能力與數(shù)據(jù)庫關(guān)系圖ADO.NET DataSetADO.NET DataSetADO.NET & DBADO.NET & DB關(guān)系圖關(guān)系圖ADO.NET是與數(shù)據(jù)源交互的.NET技術(shù)。有許多的Data Providers,它

7、將允許與不同的數(shù)據(jù)源交流取決于它們所使用的協(xié)議或者數(shù)據(jù)庫。然而無論使用什么樣的Data Provider,都將將使用相似的對象與數(shù)據(jù)源進行交互。Connection對象管理與數(shù)據(jù)源的連接。Command對象允許與數(shù)據(jù)源交 流并發(fā)送命令給它。為了對進行快速的只“向前”地讀取數(shù)據(jù),使用DataReader。如果想使用斷開數(shù)據(jù),使用DataSet并實現(xiàn)能進行讀取或者寫入數(shù)據(jù)源的DataAdapter??偨Y(jié)總結(jié)第第2節(jié)節(jié)用 ADO.NET 連接數(shù)據(jù)庫數(shù)據(jù)庫高級應(yīng)用預(yù)習(xí)檢查預(yù)習(xí)檢查 ADO.NET 的功能是什么?的功能是什么? 連接數(shù)據(jù)庫使用什么對象?連接數(shù)據(jù)庫使用什么對象? 執(zhí)行執(zhí)行 SQL 命令使用

8、什么對象?命令使用什么對象?數(shù)據(jù)庫高級應(yīng)用本節(jié)任務(wù)本節(jié)任務(wù) 完成完成 學(xué)生選課應(yīng)用程序的登錄功能學(xué)生選課應(yīng)用程序的登錄功能 連接到連接到 xk數(shù)據(jù)庫數(shù)據(jù)庫 查詢用戶名和密碼是否存在查詢用戶名和密碼是否存在數(shù)據(jù)庫高級應(yīng)用本節(jié)目標本節(jié)目標 了解了解 ADO.NET 的功能和組成的功能和組成 會使用會使用 Connection 對象連接到數(shù)據(jù)庫對象連接到數(shù)據(jù)庫 會使用會使用 Command 對象查詢單個值對象查詢單個值數(shù)據(jù)庫高級應(yīng)用ADO.NET 概述概述使用數(shù)據(jù)庫存儲使用數(shù)據(jù)庫存儲數(shù)據(jù)數(shù)據(jù)SQL-ServerACCESSORACLE數(shù)據(jù)庫訪問的方法和技術(shù)數(shù)據(jù)庫訪問的方法和技術(shù)數(shù)據(jù)庫高級應(yīng)用ADO.

9、NET 的主要組件的主要組件ADO.NETDataSet(數(shù)據(jù)集)(數(shù)據(jù)集).NET Framework 數(shù)據(jù)提供程序數(shù)據(jù)提供程序 只進、只讀訪問數(shù)據(jù)只進、只讀訪問數(shù)據(jù)獨立于數(shù)據(jù)源的數(shù)據(jù)訪問獨立于數(shù)據(jù)源的數(shù)據(jù)訪問數(shù)據(jù)庫高級應(yīng)用ADO.NET 操作數(shù)據(jù)庫結(jié)構(gòu)圖操作數(shù)據(jù)庫結(jié)構(gòu)圖本節(jié)內(nèi)容本節(jié)內(nèi)容數(shù)據(jù)庫高級應(yīng)用.NET 數(shù)據(jù)提供程序類型數(shù)據(jù)提供程序類型.NET Framework 數(shù)據(jù)提供程序數(shù)據(jù)提供程序說明說明SQL Server .NET 數(shù)據(jù)提供程序數(shù)據(jù)提供程序Microsoft SQL Server 數(shù)據(jù)源數(shù)據(jù)源System.Data.SqlClient 命名空間命名空間OLE DB .NET

10、 數(shù)據(jù)提供程序數(shù)據(jù)提供程序OLE DB 公開的數(shù)據(jù)源公開的數(shù)據(jù)源System.Data.OleDb 命名空間命名空間ODBC .NET 數(shù)據(jù)提供程序數(shù)據(jù)提供程序ODBC 公開的數(shù)據(jù)源公開的數(shù)據(jù)源System.Data.Odbc 命名空間命名空間Oracle .NET 數(shù)據(jù)提供程序數(shù)據(jù)提供程序Oracle 數(shù)據(jù)源數(shù)據(jù)源System.Data.OracleClient 命名空間命名空間數(shù)據(jù)庫高級應(yīng)用小結(jié)小結(jié) ADO.NET 包括哪兩個主要的組件?包括哪兩個主要的組件? .NET 數(shù)據(jù)提供程序的四個核心對象是什么?數(shù)據(jù)提供程序的四個核心對象是什么?數(shù)據(jù)庫高級應(yīng)用為什么使用為什么使用 Connecti

11、on應(yīng)用程序應(yīng)用程序請求數(shù)據(jù)請求數(shù)據(jù)Connection橋梁橋梁數(shù)據(jù)庫高級應(yīng)用連接數(shù)據(jù)庫示例連接數(shù)據(jù)庫示例 連接到本機的連接到本機的 XK 數(shù)據(jù)庫數(shù)據(jù)庫演示示例演示示例1:測試測試 XK 數(shù)據(jù)庫連接數(shù)據(jù)庫連接數(shù)據(jù)庫高級應(yīng)用示例示例1 代碼分析代碼分析 關(guān)鍵代碼回顧關(guān)鍵代碼回顧/ 數(shù)據(jù)庫連接字符串?dāng)?shù)據(jù)庫連接字符串string connString = Data Source= . ;Initial Catalog=XK;User ID=sa;/ 創(chuàng)建創(chuàng)建 Connection 對象對象SqlConnection connection = new SqlConnection(connString)

12、; / 打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接connection.Open();MessageBox.Show(打開數(shù)據(jù)庫連接成功打開數(shù)據(jù)庫連接成功); / 關(guān)閉數(shù)據(jù)庫連接關(guān)閉數(shù)據(jù)庫連接connection.Close();MessageBox.Show(關(guān)閉數(shù)據(jù)庫連接成功關(guān)閉數(shù)據(jù)庫連接成功);表示本表示本機機示例示例1 1源代碼源代碼數(shù)據(jù)庫高級應(yīng)用Connection 主要成員主要成員必須顯式關(guān)閉連必須顯式關(guān)閉連接接屬性屬性說明說明ConnectionString 連接字符串連接字符串方法方法說明說明Open打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接Close關(guān)閉數(shù)據(jù)庫連接關(guān)閉數(shù)據(jù)庫連接數(shù)據(jù)庫高級應(yīng)用連接數(shù)據(jù)庫步

13、驟連接數(shù)據(jù)庫步驟連接數(shù)據(jù)庫的步驟:連接數(shù)據(jù)庫的步驟:1、定義連接字符串、定義連接字符串2、創(chuàng)建、創(chuàng)建 Connection 對象對象3、打開與數(shù)據(jù)庫的連接、打開與數(shù)據(jù)庫的連接Data Source=服務(wù)器名服務(wù)器名;Initial Catalog=數(shù)據(jù)庫名數(shù)據(jù)庫名; User ID=用用戶名戶名;Pwd=密碼密碼SqlConnection connection = new SqlConnection(connString);連接字符串連接字符串connection.Open( );沒有密碼,可省沒有密碼,可省略略數(shù)據(jù)庫高級應(yīng)用Connection 對象對象命名空間命名空間對應(yīng)的對應(yīng)的 Conn

14、ection 對象對象System.Data.SqlClient SqlConnectionSystem.Data.OleDbOleDbConnectionSystem.Data.Odbc OdbcConnectionSystem.Data.OracleClientOracleConnection不同命名空間的不同命名空間的 Connection 對象對象數(shù)據(jù)庫高級應(yīng)用小結(jié)小結(jié) 連接到本機的連接到本機的 pubs 數(shù)據(jù)庫數(shù)據(jù)庫/ 連接字符串連接字符串string connString = Data Source=.;Initial Catalog=pubs;User ID=sa;/ 創(chuàng)建創(chuàng)建C

15、onnection 對象對象 SqlConnection connection = new SqlConnection(connString);connection.Open( ); / 打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接connection.Close( ); / 關(guān)閉數(shù)據(jù)庫連接關(guān)閉數(shù)據(jù)庫連接關(guān)鍵代碼關(guān)鍵代碼參考答案參考答案數(shù)據(jù)庫高級應(yīng)用為什么使用異常處理為什么使用異常處理應(yīng)用程序應(yīng)用程序打開數(shù)據(jù)庫打開數(shù)據(jù)庫處理數(shù)據(jù)處理數(shù)據(jù)與數(shù)據(jù)庫的連接中斷與數(shù)據(jù)庫的連接中斷無法打開數(shù)據(jù)庫無法打開數(shù)據(jù)庫無法操作數(shù)據(jù)無法操作數(shù)據(jù)出現(xiàn)意外錯誤!出現(xiàn)意外錯誤!出現(xiàn)異常出現(xiàn)異常數(shù)據(jù)庫高級應(yīng)用異常處理異常處理 異常異常:在

16、運行時發(fā)生的錯誤:在運行時發(fā)生的錯誤 異常處理異常處理:預(yù)知可能發(fā)生的異常,在程序中編:預(yù)知可能發(fā)生的異常,在程序中編碼處理碼處理操作數(shù)據(jù)庫時可能發(fā)生異常:操作數(shù)據(jù)庫時可能發(fā)生異常:無法打開數(shù)據(jù)庫無法打開數(shù)據(jù)庫無法讀取數(shù)據(jù)無法讀取數(shù)據(jù)數(shù)據(jù)操作出錯數(shù)據(jù)操作出錯數(shù)據(jù)庫高級應(yīng)用如何處理異常如何處理異常2-1 使用使用 trycatch 塊捕獲和處理異常塊捕獲和處理異常try connection.Open(); / connection.Close();catch(處理的異常類型處理的異常類型) / 錯誤處理代碼錯誤處理代碼處理異常的代碼處理異常的代碼出現(xiàn)異常,跳到出現(xiàn)異常,跳到catch否則正常向

17、下執(zhí)行否則正常向下執(zhí)行出出現(xiàn)現(xiàn)異異常,常,跳跳轉(zhuǎn)轉(zhuǎn)連接關(guān)閉語連接關(guān)閉語句將不被執(zhí)句將不被執(zhí)行行包含可能出現(xiàn)異常包含可能出現(xiàn)異常的代碼的代碼數(shù)據(jù)庫高級應(yīng)用如何處理異常如何處理異常2-2 finally 塊塊無論是否發(fā)生異常,都會執(zhí)行無論是否發(fā)生異常,都會執(zhí)行try connection.open(); / catch(處理的異常類型處理的異常類型) finally connection.Close();可能出現(xiàn)異常的代可能出現(xiàn)異常的代碼碼處理異常的代碼處理異常的代碼是否發(fā)生異常是否發(fā)生異常數(shù)據(jù)庫連接都會關(guān)數(shù)據(jù)庫連接都會關(guān)閉閉必須執(zhí)行的必須執(zhí)行的語句放在語句放在 finally 中中無論如何都會執(zhí)

18、行無論如何都會執(zhí)行的代碼的代碼數(shù)據(jù)庫高級應(yīng)用connection.Open();MessageBox.Show(打開數(shù)據(jù)庫連打開數(shù)據(jù)庫連接完畢接完畢); connection.Close();MessageBox.Show(關(guān)閉數(shù)據(jù)庫連關(guān)閉數(shù)據(jù)庫連接完畢接完畢);處理異常處理異常 修改示例修改示例1的代碼,增加的代碼,增加 try 語句塊語句塊演示示例演示示例2:使用使用trycatchfinally數(shù)據(jù)庫高級應(yīng)用小結(jié)小結(jié)如果如果 try 中中沒有出現(xiàn)異常沒有出現(xiàn)異常,顯示哪幾個消,顯示哪幾個消息框?息框?try / 可能出現(xiàn)異常的代碼可能出現(xiàn)異常的代碼 MessageBox.Show(try

19、塊塊); catch (Exception e) MessageBox.Show(catch塊塊);finally MessageBox.Show(finally塊塊);顯示顯示顯示顯示不顯示不顯示數(shù)據(jù)庫高級應(yīng)用為什么使用為什么使用 Command應(yīng)用程序應(yīng)用程序打開數(shù)據(jù)庫打開數(shù)據(jù)庫處理數(shù)據(jù)處理數(shù)據(jù)Connection怎樣處理怎樣處理數(shù)據(jù)數(shù)據(jù)執(zhí)行命令并從數(shù)據(jù)源中返回結(jié)果執(zhí)行命令并從數(shù)據(jù)源中返回結(jié)果 數(shù)據(jù)庫高級應(yīng)用操作數(shù)據(jù)庫示例操作數(shù)據(jù)庫示例 查詢查詢 XK數(shù)據(jù)庫數(shù)據(jù)庫 Student 表中記錄的數(shù)目表中記錄的數(shù)目演示示例演示示例3:查詢查詢Student表記錄條數(shù)表記錄條數(shù)數(shù)據(jù)庫高級應(yīng)用Com

20、mand 的主要成員的主要成員屬性屬性說明說明Connection Command對象使用的數(shù)據(jù)庫連接對象使用的數(shù)據(jù)庫連接CommandText執(zhí)行的執(zhí)行的SQL語句語句方法方法說明說明 ExecuteNonQuery執(zhí)行不返回行的語句,如執(zhí)行不返回行的語句,如UPDATE等等ExecuteReader返回返回DataReader對象對象ExecuteScalar返回單個值,如執(zhí)行返回單個值,如執(zhí)行COUNT(*)數(shù)據(jù)庫高級應(yīng)用使用使用 Command 步驟步驟使用使用Command步驟:步驟:1、創(chuàng)建數(shù)據(jù)庫連接、創(chuàng)建數(shù)據(jù)庫連接2、定義、定義 SQL 語句語句3、創(chuàng)建、創(chuàng)建 Command 對

21、象對象4、執(zhí)行命令、執(zhí)行命令SqlConnection connection = new SqlConnection(connString);string sql = SELECT COUNT(*) FROM Student;connection.Open();/ 打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接SqlCommand command = new SqlCommand(sql, connection);int num = (int)command.ExecuteScalar();示例示例 3 關(guān)鍵代關(guān)鍵代碼:碼:執(zhí)行命令前,必須打開數(shù)據(jù)執(zhí)行命令前,必須打開數(shù)據(jù)庫連接!庫連接!要進行類型轉(zhuǎn)換!要進行類

22、型轉(zhuǎn)換!數(shù)據(jù)庫高級應(yīng)用綜合示例綜合示例完成系統(tǒng)登錄功能完成系統(tǒng)登錄功能1、驗證管理員的用戶名和密碼是否存在、驗證管理員的用戶名和密碼是否存在2、驗證通過,顯示管理員主窗體、驗證通過,顯示管理員主窗體處理登錄按鈕的處理登錄按鈕的 Click 事件事件定義一個定義一個 ValidateUser() 方法方法需要需要 Connection 和和 Command 對象對象分兩步實現(xiàn)驗證分兩步實現(xiàn)驗證:1、建立數(shù)據(jù)庫連接、建立數(shù)據(jù)庫連接2、驗證用戶是否存在、驗證用戶是否存在 數(shù)據(jù)庫高級應(yīng)用用戶驗證方法框架用戶驗證方法框架ValidateUser() 方法框方法框架架1、驗證的結(jié)果:通過,不、驗證的結(jié)果:

23、通過,不通過通過返回值為返回值為 bool 型型2、方法需要:、方法需要: 用戶名,密碼,登錄類型用戶名,密碼,登錄類型值方式傳參值方式傳參3、不通過的原因:、不通過的原因: 用戶名或密碼不存在、其用戶名或密碼不存在、其他原因他原因引用方式傳參引用方式傳參public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message) 演示示例演示示例4:增加方法的定義和調(diào)用增加方法的定義和調(diào)用數(shù)據(jù)庫高級應(yīng)用用戶驗證方法具體實現(xiàn)用戶驗證方法具體實現(xiàn) 第一步:建立數(shù)據(jù)庫連接第一步:建立數(shù)

24、據(jù)庫連接 增加增加 DBHelper 類類 第二步:查詢用戶是否存在第二步:查詢用戶是否存在 SELECT COUNT(*) ExecuteScalar() 方法查詢方法查詢演示示例演示示例5:用戶驗證方法具體實現(xiàn)用戶驗證方法具體實現(xiàn)ValidateUser() 方法具體實現(xiàn)方法具體實現(xiàn)數(shù)據(jù)庫高級應(yīng)用小結(jié)小結(jié)/ 查詢查詢 Student 表使用的表使用的 SQL 語句語句string sql = string.Format( SELECT COUNT(*) FROM Student WHERE LogInId=0 AND LogInPwd=1,txtLogInId, txtLogInPwd);

25、/ 使用的使用的 Command 對象對象SqlCommand command = new SqlCommand(sql, DBHelper.connection);DBHelper.connection.Open();/ 執(zhí)行查詢,返回找到的個數(shù)執(zhí)行查詢,返回找到的個數(shù)count = (int)command.ExecuteScalar();參考答案參考答案在示例在示例5中增加驗證學(xué)員用戶的中增加驗證學(xué)員用戶的代碼代碼數(shù)據(jù)庫高級應(yīng)用總結(jié)總結(jié) Connection 對象的什么方法用來打開和關(guān)對象的什么方法用來打開和關(guān)閉數(shù)據(jù)庫連接?閉數(shù)據(jù)庫連接? ExecuteScalar()方法返回什么?方法

26、返回什么?第第3節(jié)節(jié)用 ADO.NET 查詢和操作數(shù)據(jù)庫數(shù)據(jù)庫高級應(yīng)用回顧回顧 Connection 對象的作用是什么?對象的作用是什么? 什么是異常,用什么結(jié)構(gòu)處理異常?什么是異常,用什么結(jié)構(gòu)處理異常? ExecuteScalar() 方法返回什么?方法返回什么?數(shù)據(jù)庫高級應(yīng)用預(yù)習(xí)檢查預(yù)習(xí)檢查 DataReader 對象的用途是什么?對象的用途是什么? ExecuteNonQuery() 方法的功能是什么?方法的功能是什么? ExecuteReader() 方法的功能是什么?方法的功能是什么?數(shù)據(jù)庫高級應(yīng)用本節(jié)任務(wù)本節(jié)任務(wù) 選課系統(tǒng)的學(xué)生信息的增刪改查選課系統(tǒng)的學(xué)生信息的增刪改查 實現(xiàn)學(xué)員信

27、息的模糊查詢實現(xiàn)學(xué)員信息的模糊查詢 實現(xiàn)添加學(xué)員用戶功能實現(xiàn)添加學(xué)員用戶功能 實現(xiàn)修改學(xué)員用戶狀態(tài)功能實現(xiàn)修改學(xué)員用戶狀態(tài)功能 實現(xiàn)刪除學(xué)員用戶功能實現(xiàn)刪除學(xué)員用戶功能數(shù)據(jù)庫高級應(yīng)用本節(jié)目標本節(jié)目標 會使用會使用 DataReader 對象檢索數(shù)據(jù)對象檢索數(shù)據(jù) 會使用會使用 Command 對象操作數(shù)據(jù)對象操作數(shù)據(jù) 掌握掌握 ListView 控件的使用控件的使用 掌握掌握 ContextMenuStrip 控件的使用控件的使用數(shù)據(jù)庫高級應(yīng)用為什么使用為什么使用 DataReader應(yīng)用程序應(yīng)用程序 毛毛,安陽師院,毛毛,安陽師院,優(yōu)秀優(yōu)秀 毛毛毛毛姓名:姓名:學(xué)校:學(xué)校: 安陽師院安陽師院成

28、績:成績: 優(yōu)秀優(yōu)秀 怎樣讀取數(shù)據(jù)庫的數(shù)據(jù)?怎樣讀取數(shù)據(jù)庫的數(shù)據(jù)?使用使用 DataReader 對象對象數(shù)據(jù)庫高級應(yīng)用DataReader 對象對象 每次讀取一行數(shù)據(jù)每次讀取一行數(shù)據(jù)命名空間命名空間對應(yīng)的對應(yīng)的 DataReader 對象對象System.Data.SqlClient SqlDataReaderSystem.Data.OleDbOleDbDataReaderSystem.Data.Odbc OdbcDataReaderSystem.Data.OracleClientOracleDataReader數(shù)據(jù)庫高級應(yīng)用使用使用 DataReader 查詢數(shù)據(jù)查詢數(shù)據(jù)添加年級組合框中的

29、年級名稱添加年級組合框中的年級名稱 處理窗體處理窗體 Load 事件事件 使用使用 DataReader 讀取讀取年級名稱年級名稱 演示示例演示示例1:使用使用 DataReader 讀取數(shù)據(jù)讀取數(shù)據(jù)數(shù)據(jù)庫高級應(yīng)用示例示例1 代碼分析代碼分析 關(guān)鍵代碼回顧:關(guān)鍵代碼回顧:示例示例1 1源代碼源代碼/ 執(zhí)行查詢執(zhí)行查詢SqlDataReader dataReader = command.ExecuteReader();string gradeName = ; / 年級名稱年級名稱/ 循環(huán)讀出所有的年級名,并添加到年級列表框中循環(huán)讀出所有的年級名,并添加到年級列表框中while (dataRead

30、er.Read() gradeName = (string)dataReader0; cboGrade.Items.Add(gradeName);dataReader.Close();循環(huán)讀取數(shù)據(jù)循環(huán)讀取數(shù)據(jù)行行添加到組合框添加到組合框中中數(shù)據(jù)庫高級應(yīng)用DataReader 的主要成員的主要成員屬性屬性說明說明HasRows 是否返回了結(jié)果是否返回了結(jié)果方法方法說明說明 Read前進到下一行記錄前進到下一行記錄Close關(guān)閉關(guān)閉 DataReader 對象對象 DataReader 的主要成員:的主要成員:數(shù)據(jù)庫高級應(yīng)用DataReader 使用步驟小結(jié)使用步驟小結(jié)使用使用 DataReade

31、r 檢索數(shù)據(jù)的步驟:檢索數(shù)據(jù)的步驟:1、創(chuàng)建、創(chuàng)建 Command 對象對象2、調(diào)用、調(diào)用 ExecuteReader() 創(chuàng)建創(chuàng)建 DataReader 對象對象3、使用、使用 DataReader 的的 Read() 方法逐行讀取數(shù)據(jù)方法逐行讀取數(shù)據(jù)4、讀取某列的數(shù)據(jù),、讀取某列的數(shù)據(jù),(type)dataReader 5、關(guān)閉、關(guān)閉 DataReader 對象對象獲取某列的值:獲取某列的值:方法一:指定列的索引,方法一:指定列的索引,從從0開始開始方法二:指定列名方法二:指定列名注意:注意:DataReader 使用后必須關(guān)使用后必須關(guān)閉閉數(shù)據(jù)庫高級應(yīng)用小結(jié)小結(jié) 編寫控制臺程序,從編寫控

32、制臺程序,從XK數(shù)據(jù)庫的數(shù)據(jù)庫的Student表表中,讀取出所有姓中,讀取出所有姓“李李”學(xué)員的姓名學(xué)員的姓名參考代碼參考代碼string sql = SELECT StudentName FROM Student WHERE StudentName LIKE 李李%;SqlCommand command = new SqlCommand(sql, connection);connection.Open();SqlDataReader dataReader = command.ExecuteReader();Console.WriteLine(查詢結(jié)果查詢結(jié)果:);while (dataRea

33、der.Read() Console.WriteLine(string)dataReaderStudentName);dataReader.Close();數(shù)據(jù)庫高級應(yīng)用操作數(shù)據(jù)操作數(shù)據(jù)應(yīng)用程序應(yīng)用程序毛毛,北大青鳥,毛毛,北大青鳥,良好良好 毛毛毛毛姓名:姓名:學(xué)校:學(xué)校: 北大青鳥北大青鳥成績:成績: 良好良好 如何對數(shù)據(jù)庫的數(shù)據(jù)進行如何對數(shù)據(jù)庫的數(shù)據(jù)進行增刪改增刪改?使用使用 ExecuteNonQuery() 方法方法數(shù)據(jù)庫高級應(yīng)用操作數(shù)據(jù)示例操作數(shù)據(jù)示例怎樣新增學(xué)員用戶?怎樣新增學(xué)員用戶? 處理處理“保存保存”按鈕的按鈕的 Click事件事件 使用使用 ExecuteNonQuery

34、() 方法向數(shù)據(jù)庫增加記錄方法向數(shù)據(jù)庫增加記錄 演示示例演示示例2:向數(shù)據(jù)庫增加記錄向數(shù)據(jù)庫增加記錄數(shù)據(jù)庫高級應(yīng)用示例示例 2 代碼分析代碼分析 關(guān)鍵代碼回顧:關(guān)鍵代碼回顧:示例示例2 2源代碼源代碼/ 創(chuàng)建創(chuàng)建command對象對象SqlCommand command = new SqlCommand(sql, DBHelper.connection); / 打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接DBHelper.connection.Open(); / 執(zhí)行命令執(zhí)行命令int result = command.ExecuteNonQuery(); 返回受影響記錄的行數(shù)返回受影響記錄的行數(shù)數(shù)據(jù)庫高級應(yīng)

35、用ExecuteNonQuery()方法小結(jié)方法小結(jié) 該方法該方法執(zhí)行執(zhí)行指定的指定的 sql 語句語句 返回返回受影響的行數(shù)受影響的行數(shù)使用使用 ExecuteNonQuery() 的步驟小結(jié):的步驟小結(jié):1、創(chuàng)建、創(chuàng)建 Connection 對象對象2、定義、定義sql 語句語句3、創(chuàng)建、創(chuàng)建 Command 對象對象4、執(zhí)行、執(zhí)行 ExecuteNonQuery() 方法方法5、根據(jù)返回的結(jié)果進行處理、根據(jù)返回的結(jié)果進行處理數(shù)據(jù)庫高級應(yīng)用private void btnAdd_Click(object sender, EventArgs e) string connStr = ; Sql

36、Connection connection = new SqlConnection(connStr); / 向數(shù)據(jù)庫中添加年級名稱的代碼向數(shù)據(jù)庫中添加年級名稱的代碼小結(jié)小結(jié) 向數(shù)據(jù)庫中添加年級向數(shù)據(jù)庫中添加年級 假設(shè)數(shù)據(jù)庫連接字符串假設(shè)數(shù)據(jù)庫連接字符串已知為已知為 connStr 將添加年級名稱部分的將添加年級名稱部分的代碼補充完整代碼補充完整string connStr = ;SqlConnection connection = new SqlConnection(connStr); / 插入記錄用的插入記錄用的 SQL 語句語句 string sql = string.Format( IN

37、SERT INTO Grade (GradeName) VALUES (0), txtGradeName.Text);/ 創(chuàng)建創(chuàng)建 Command 對象對象SqlCommand command = new SqlCommand(sql, connection);/ 打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接connection.Open(); / 執(zhí)行插入命令執(zhí)行插入命令int result = command.ExecuteNonQuery();connection.Close(); / 關(guān)閉數(shù)據(jù)庫連接關(guān)閉數(shù)據(jù)庫連接 參考代碼參考代碼數(shù)據(jù)庫高級應(yīng)用查詢數(shù)據(jù)綜合示例查詢數(shù)據(jù)綜合示例如何實現(xiàn)學(xué)員信息查詢功能?

38、如何實現(xiàn)學(xué)員信息查詢功能?使用使用DataReader 查詢數(shù)據(jù)查詢數(shù)據(jù)使用使用ListView 控件顯示數(shù)據(jù)控件顯示數(shù)據(jù) 演示示例演示示例3:學(xué)員信息查詢功能學(xué)員信息查詢功能數(shù)據(jù)庫高級應(yīng)用示例示例3 代碼分析代碼分析 關(guān)鍵代碼回顧關(guān)鍵代碼回顧查詢信息查詢信息:示例示例3 3源代碼源代碼 / 執(zhí)行查詢用戶命令執(zhí)行查詢用戶命令dataReader = command.ExecuteReader(); while (dataReader.Read() / 讀取各列的數(shù)據(jù)讀取各列的數(shù)據(jù) loginId = (string)dataReaderLoginId; / 向向 ListView 中添加記錄中

39、添加記錄dataReader.Close(); / 關(guān)閉關(guān)閉 DataReader 對象對象回顧回顧 DataReader 的使用步驟的使用步驟數(shù)據(jù)庫高級應(yīng)用示例示例3 代碼分析代碼分析 關(guān)鍵代碼回顧關(guān)鍵代碼回顧添加記錄到添加記錄到 ListView:示例示例3 3源代碼源代碼/ 創(chuàng)建一個創(chuàng)建一個ListView項項ListViewItem lviStudent = new ListViewItem(loginId); / 將將ID放在放在Tag中中l(wèi)viStudent.Tag = (int)dataReaderStudentID; / 向向ListView中添加一個新項中添加一個新項lvSt

40、udent.Items.Add(lviStudent); / 向當(dāng)前項中添加子項向當(dāng)前項中添加子項lviStudent.SubItems.AddRange( new string studentName, studentNO, userState ); 創(chuàng)建列表視圖項創(chuàng)建列表視圖項添加列表視圖項添加列表視圖項添加列表視圖項的子添加列表視圖項的子項項數(shù)據(jù)庫高級應(yīng)用控件進階控件進階列表視圖控件列表視圖控件 ListView :列表視圖控件:列表視圖控件以特定樣式或視圖類型顯示列表項以特定樣式或視圖類型顯示列表項數(shù)據(jù)庫高級應(yīng)用 ListView 控件屬性和方法控件屬性和方法屬性屬性說明說明Colum

41、ns“詳細信息詳細信息”視圖中顯示的列視圖中顯示的列SelectedItems選中的項的集合選中的項的集合View指定顯示五種視圖中的哪一種視圖指定顯示五種視圖中的哪一種視圖方法方法說明說明Clear()移除移除ListView中的所有項中的所有項 ListView 控件的主要屬性和方法:控件的主要屬性和方法:數(shù)據(jù)庫高級應(yīng)用列表示圖項、子項列表示圖項、子項列的集合列的集合Columns項的集合項的集合Items列表視圖項列表視圖項ListViewItem列表視圖項的子列表視圖項的子項項ListViewSubItem子項的集合子項的集合SubItems數(shù)據(jù)庫高級應(yīng)用操作數(shù)據(jù)綜合示例操作數(shù)據(jù)綜合示

42、例修改學(xué)員用戶的狀態(tài)修改學(xué)員用戶的狀態(tài)使用快捷菜單列出各個使用快捷菜單列出各個操作操作使用使用 ExecuteNonQuery() 方法操作數(shù)據(jù)方法操作數(shù)據(jù) 演示示例演示示例4:修改用戶狀態(tài)為修改用戶狀態(tài)為“非活動非活動”數(shù)據(jù)庫高級應(yīng)用示例示例4 代碼分析代碼分析 關(guān)鍵代碼回顧關(guān)鍵代碼回顧修改用戶狀態(tài)修改用戶狀態(tài):示例示例4 4源代碼源代碼/ 修改用修改用sql語句語句string sql = string.Format( Update Student SET UserStateId=0 WHERE StudentID=0, (int)lvStudent.SelectedItems0.Tag)

43、;/ 創(chuàng)建創(chuàng)建Command對象對象SqlCommand command = new SqlCommand(sql, DBHelper.connection);DBHelper.connection.Open(); / 打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接result = command.ExecuteNonQuery(); / 執(zhí)行命令執(zhí)行命令 DBHelper.connection.Close(); / 關(guān)閉數(shù)據(jù)庫連接關(guān)閉數(shù)據(jù)庫連接FillListView(); / 重新查詢信息填充列表視圖重新查詢信息填充列表視圖回顧回顧 ExecuteNonQuery() 的使的使用步驟用步驟數(shù)據(jù)庫高級應(yīng)用控件

44、進階控件進階快捷菜單控件快捷菜單控件 ContextMenuStrip :快捷菜單控件:快捷菜單控件 為控件指定快捷菜單:為控件指定快捷菜單:ContextMenuStrip 屬性屬性顯示與控件關(guān)聯(lián)的菜單顯示與控件關(guān)聯(lián)的菜單數(shù)據(jù)庫高級應(yīng)用 ContextMenuStrip屬性和方法屬性和方法屬性屬性說明說明DisplayStyle指定是否顯示圖像和文本指定是否顯示圖像和文本Image顯示在菜單項上的圖像顯示在菜單項上的圖像Text顯示在菜單項上的文本顯示在菜單項上的文本方法方法說明說明Click單擊事件,單擊菜單項時發(fā)生單擊事件,單擊菜單項時發(fā)生 ContextMenuStrip 控件的主要屬

45、性和方法控件的主要屬性和方法數(shù)據(jù)庫高級應(yīng)用操作數(shù)據(jù)綜合示例操作數(shù)據(jù)綜合示例刪除學(xué)員用戶信息刪除學(xué)員用戶信息 演示示例演示示例5:刪除學(xué)員用戶信息刪除學(xué)員用戶信息數(shù)據(jù)庫高級應(yīng)用小結(jié)小結(jié) 在示例在示例5中,實現(xiàn)修改學(xué)員狀態(tài)為中,實現(xiàn)修改學(xué)員狀態(tài)為“活動活動”的功能的功能參考代碼參考代碼/ 關(guān)鍵代碼關(guān)鍵代碼/ 修改用修改用sql語句語句string sql = string.Format( Update Student SET UserStateId=1 WHERE StudentID=0, (int)lvStudent.SelectedItems0.Tag);/ 創(chuàng)建創(chuàng)建Command對象對象Sq

46、lCommand command = new SqlCommand(sql, DBHelper.connection);DBHelper.connection.Open(); / 打開數(shù)據(jù)庫連接打開數(shù)據(jù)庫連接result = command.ExecuteNonQuery(); / 執(zhí)行命令執(zhí)行命令DBHelper.connection.Close(); / 關(guān)閉數(shù)據(jù)庫連接關(guān)閉數(shù)據(jù)庫連接數(shù)據(jù)庫高級應(yīng)用操作數(shù)據(jù)庫總結(jié)操作數(shù)據(jù)庫總結(jié) 操作數(shù)據(jù)庫相關(guān)對象操作數(shù)據(jù)庫相關(guān)對象相關(guān)對象相關(guān)對象用途用途Connection 對象對象連接數(shù)據(jù)庫連接數(shù)據(jù)庫Command 對象對象執(zhí)行執(zhí)行 SQL 命令命令Dat

47、aReader 對象對象讀取查詢結(jié)果中的數(shù)據(jù)讀取查詢結(jié)果中的數(shù)據(jù)數(shù)據(jù)庫高級應(yīng)用使用命令操作數(shù)據(jù)庫使用命令操作數(shù)據(jù)庫 使用使用 Command 對象對象檢索檢索數(shù)據(jù)庫的步驟數(shù)據(jù)庫的步驟創(chuàng)建查詢用創(chuàng)建查詢用 sql 語句語句創(chuàng)建創(chuàng)建 Connection 對對象象創(chuàng)建創(chuàng)建 Command 對對象象返回返回 DataReader 對象對象使用使用 DataReader 的的 Read() 方法逐行讀方法逐行讀取結(jié)果取結(jié)果使用使用列名或列的索引從列名或列的索引從 DataReader 中中獲取某列獲取某列的值的值返回單個值返回單個值執(zhí)行執(zhí)行 ExecuteReader() 方方法法執(zhí)行執(zhí)行 Execu

48、teScalar() 方方法法數(shù)據(jù)庫高級應(yīng)用使用命令操作數(shù)據(jù)庫使用命令操作數(shù)據(jù)庫 使用使用 Command 對象對象更改更改數(shù)據(jù)庫的步驟數(shù)據(jù)庫的步驟創(chuàng)建創(chuàng)建 sql 語句語句Insert、Update、Delete創(chuàng)建創(chuàng)建 Connection 對象對象創(chuàng)建創(chuàng)建 Command 對對象象返回受影響的行數(shù)返回受影響的行數(shù)執(zhí)行執(zhí)行 ExecuteNonQuery() 方法方法數(shù)據(jù)庫高級應(yīng)用總結(jié)總結(jié) ExecuteReader() 方法返回什么?方法返回什么? ExecuteNonQuery() 方法返回什么?方法返回什么? 使用使用什么對象讀取什么對象讀取數(shù)據(jù)庫查詢結(jié)果?數(shù)據(jù)庫查詢結(jié)果? 使用使用

49、什么方法修改什么方法修改數(shù)據(jù)庫數(shù)據(jù)?數(shù)據(jù)庫數(shù)據(jù)?第第4節(jié)節(jié)用 DataGridView 顯示和操作數(shù)據(jù)庫數(shù)據(jù)庫高級應(yīng)用回顧回顧/ command 是一個有效的是一個有效的 Command 對象對象SqlDataReader dataReader = command.ExecuteReader(); if (dataReader.HasRows) studentName= dataReader0; dataReader.Close();缺少缺少 dataReader.Read();沒有類型轉(zhuǎn)換沒有類型轉(zhuǎn)換(string)dataReader0;數(shù)據(jù)庫高級應(yīng)用預(yù)習(xí)檢查預(yù)習(xí)檢查 DataSet 對象

50、的作用是什么?對象的作用是什么? DataAdapter 對象的作用是什么?對象的作用是什么? DataGridView 控件的作用是什么?控件的作用是什么?數(shù)據(jù)庫高級應(yīng)用本節(jié)任務(wù)本節(jié)任務(wù) 選課系統(tǒng)的用戶管理模塊選課系統(tǒng)的用戶管理模塊 實現(xiàn)批量查看和修改實現(xiàn)批量查看和修改教員教員信息功能信息功能 實現(xiàn)批量查看、篩選和修改實現(xiàn)批量查看、篩選和修改學(xué)員學(xué)員信息功能信息功能數(shù)據(jù)庫高級應(yīng)用本節(jié)目標本節(jié)目標 了解數(shù)據(jù)集(了解數(shù)據(jù)集(DataSet)的結(jié)構(gòu))的結(jié)構(gòu) 會使用數(shù)據(jù)適配器填充數(shù)據(jù)集會使用數(shù)據(jù)適配器填充數(shù)據(jù)集 會使用數(shù)據(jù)適配器將數(shù)據(jù)集的修改提交會使用數(shù)據(jù)適配器將數(shù)據(jù)集的修改提交到數(shù)據(jù)庫到數(shù)據(jù)庫 掌

51、握掌握 DataGridView 控件的使用控件的使用數(shù)據(jù)庫高級應(yīng)用 為什么使用為什么使用 DataSet 對象對象應(yīng)用程序應(yīng)用程序大量的數(shù)據(jù)大量的數(shù)據(jù)來自多個數(shù)據(jù)源來自多個數(shù)據(jù)源 大批量的查詢、修改數(shù)據(jù)怎么辦?大批量的查詢、修改數(shù)據(jù)怎么辦? 想在斷開數(shù)據(jù)庫連接的情況下操所數(shù)據(jù)怎么辦?想在斷開數(shù)據(jù)庫連接的情況下操所數(shù)據(jù)怎么辦?使用使用 DataSet 對象對象 數(shù)據(jù)庫高級應(yīng)用什么是什么是 DataSet 對象對象 DataSet 數(shù)據(jù)集數(shù)據(jù)集 簡單理解為一個臨時數(shù)據(jù)庫簡單理解為一個臨時數(shù)據(jù)庫 將數(shù)據(jù)源的數(shù)據(jù)保存在內(nèi)存中將數(shù)據(jù)源的數(shù)據(jù)保存在內(nèi)存中 獨立于任何數(shù)據(jù)庫獨立于任何數(shù)據(jù)庫生產(chǎn)線生產(chǎn)線應(yīng)用

52、程序應(yīng)用程序駐留于內(nèi)存,駐留于內(nèi)存,臨時存儲數(shù)據(jù)臨時存儲數(shù)據(jù)類似的關(guān)系類似的關(guān)系數(shù)據(jù)庫高級應(yīng)用DataSet 的結(jié)構(gòu)的結(jié)構(gòu)2-1DataSet 的基本結(jié)構(gòu)的基本結(jié)構(gòu)DataSetDataTableDataColumnCollectionDataRowCollectionDataColumnDataRowDataTableCollection數(shù)據(jù)集數(shù)據(jù)集數(shù)據(jù)表的集數(shù)據(jù)表的集合合數(shù)據(jù)表數(shù)據(jù)表數(shù)據(jù)列的集數(shù)據(jù)列的集合合數(shù)據(jù)行的集數(shù)據(jù)行的集合合數(shù)據(jù)列數(shù)據(jù)列數(shù)據(jù)行數(shù)據(jù)行數(shù)據(jù)庫高級應(yīng)用DataSet 的結(jié)構(gòu)的結(jié)構(gòu)2-2GradeTableClassTableStudentTableidnameclassse

53、x1小菲小菲5女女2小薇小薇3女女3小強小強6男男DataTableCollection數(shù)據(jù)表集合數(shù)據(jù)表集合DataTable數(shù)據(jù)表數(shù)據(jù)表DataRowCollection數(shù)據(jù)行集合數(shù)據(jù)行集合DataRow數(shù)據(jù)行數(shù)據(jù)行DataColumnCollection數(shù)據(jù)列集合數(shù)據(jù)列集合DataColumn數(shù)據(jù)列數(shù)據(jù)列數(shù)據(jù)庫高級應(yīng)用數(shù)據(jù)集的工作原理數(shù)據(jù)集的工作原理發(fā)送數(shù)發(fā)送數(shù)據(jù)據(jù)修改數(shù)修改數(shù)據(jù)集據(jù)集傳遞數(shù)傳遞數(shù)據(jù)據(jù)提交修改后的提交修改后的數(shù)據(jù)數(shù)據(jù)請求數(shù)請求數(shù)據(jù)據(jù)客戶端客戶端數(shù)據(jù)庫高級應(yīng)用如何創(chuàng)建如何創(chuàng)建 DataSet 對象對象 創(chuàng)建一個創(chuàng)建一個 DataSet 可以指定一個數(shù)據(jù)集的名稱可以指定一個數(shù)據(jù)

54、集的名稱 如果不指定名稱,則默認被設(shè)為如果不指定名稱,則默認被設(shè)為NewDataSetDataSet dataSet = new DataSet();DataSet dataSet = new DataSet(MySchool);DataSet 數(shù)據(jù)集對象數(shù)據(jù)集對象 = new DataSet(數(shù)據(jù)集的名稱字數(shù)據(jù)集的名稱字符串符串);可選的可選的數(shù)據(jù)庫高級應(yīng)用為什么使用為什么使用 DataAdapter 如何將數(shù)據(jù)庫的數(shù)據(jù)放在如何將數(shù)據(jù)庫的數(shù)據(jù)放在 DataSet 中?中?數(shù)據(jù)庫數(shù)據(jù)庫DataSet數(shù)據(jù)集數(shù)據(jù)集Connection數(shù)據(jù)庫連接數(shù)據(jù)庫連接DataAdapter數(shù)據(jù)適配器數(shù)據(jù)適配器數(shù)

55、據(jù)庫高級應(yīng)用DataAdapter 對象對象 不同命名空間的不同命名空間的 DataAdapter 對象對象命名空間命名空間對應(yīng)的對應(yīng)的 DataAdapter 對象對象System.Data.SqlClient SqlDataAdapterSystem.Data.OleDbOleDbDataAdapterSystem.Data.Odbc OdbcDataAdapterSystem.Data.OracleClientOracleDataAdapter數(shù)據(jù)庫高級應(yīng)用如何填充數(shù)據(jù)集如何填充數(shù)據(jù)集 使用使用 DataAdapter 對象填充數(shù)據(jù)集對象填充數(shù)據(jù)集使用使用 Fill() 方法填充方法填充

56、 DataSet 中的表中的表使用使用 Connection 連接數(shù)據(jù)源連接數(shù)據(jù)源ConnectionDataAdapter 的的 Fill() 方法方法數(shù)據(jù)庫高級應(yīng)用填充數(shù)據(jù)集填充數(shù)據(jù)集演示示例演示示例1:查看教師信息窗體查看教師信息窗體填充數(shù)據(jù)集,打印部填充數(shù)據(jù)集,打印部分內(nèi)容分內(nèi)容SqlDataAdapter 對象名對象名 = new SqlDataAdapter(查詢用查詢用sql語句語句, 數(shù)據(jù)庫連數(shù)據(jù)庫連接接);創(chuàng)建創(chuàng)建 SqlDataAdapter 對象對象1DataAdapter對象對象. Fill(數(shù)據(jù)集對象數(shù)據(jù)集對象, 數(shù)據(jù)表名稱字符數(shù)據(jù)表名稱字符串串);填充填充 Data

57、Set2數(shù)據(jù)庫高級應(yīng)用如何保存如何保存 DataSet 中的數(shù)據(jù)中的數(shù)據(jù) 把數(shù)據(jù)集中修改過的數(shù)據(jù)提交到數(shù)據(jù)源把數(shù)據(jù)集中修改過的數(shù)據(jù)提交到數(shù)據(jù)源dataAdapter.Update(dataSet,Teacher);DataAdapter 的的 Update() 方法方法調(diào)用前,要先設(shè)置更新需要的相關(guān)命令調(diào)用前,要先設(shè)置更新需要的相關(guān)命令可以使用可以使用 SqlCommandBuilder 對象對象Connection數(shù)據(jù)庫高級應(yīng)用SqlCommandBuilder 對象對象 利用利用 SqlCommandBuilder 對象能夠自動生成:對象能夠自動生成: INSERT 命令命令 UPDATE

58、 命令命令 DELETE 命令命令SqlCommandBuilder builder = new SqlCommandBuilder(已創(chuàng)建的已創(chuàng)建的DataAdapter對對象象);數(shù)據(jù)庫高級應(yīng)用保存保存 DataSet 中的數(shù)據(jù)中的數(shù)據(jù)自動生成用于更新的相關(guān)命令自動生成用于更新的相關(guān)命令1將將 DataSet 的數(shù)據(jù)提交到數(shù)據(jù)源的數(shù)據(jù)提交到數(shù)據(jù)源2SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter); dataAdapter.Update(dataSet,Teacher); 步驟:步驟:SqlCommandBuilde

59、r builder = new SqlCommandBuilder(已創(chuàng)建的已創(chuàng)建的DataAdapter對對象象);DataAdapter對象對象. Update(數(shù)據(jù)集對象數(shù)據(jù)集對象, 數(shù)據(jù)表名稱字符數(shù)據(jù)表名稱字符串串);數(shù)據(jù)庫高級應(yīng)用DataAdapter 對象小結(jié)對象小結(jié) DataAdapter 的主要屬性和方法的主要屬性和方法屬性屬性說明說明SelectCommand 從數(shù)據(jù)庫檢索數(shù)據(jù)的從數(shù)據(jù)庫檢索數(shù)據(jù)的 Command 對象對象方法方法說明說明Fill 向向 DataSet 中的表填充數(shù)據(jù)中的表填充數(shù)據(jù)Update將將 DataSet 中的數(shù)據(jù)提交到數(shù)據(jù)庫中的數(shù)據(jù)提交到數(shù)據(jù)庫數(shù)據(jù)庫高級應(yīng)用小結(jié)小結(jié) 使用什么方法填充使用什么方法填充 DataSet ? DataAdapter 的作用是什么?的作用是什么? 使用什么方法將使用什么方法將 DataSet 中數(shù)據(jù)提交到數(shù)據(jù)中數(shù)據(jù)提交到數(shù)據(jù)庫?庫?數(shù)據(jù)庫高級應(yīng)用為什么使用為什么使用 DataGridView 怎樣顯示怎樣顯示 DataSet 中的數(shù)據(jù)呢?中的數(shù)據(jù)呢?使用使用 DataGridView數(shù)據(jù)庫高級應(yīng)用DataGridView 控件控件 DataGridView 控件控件強大而靈活地顯示數(shù)據(jù)

溫馨提示

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

最新文檔

評論

0/150

提交評論