版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第21章 ADO.NET之一:連接層21.1 ADO.NET概述 ADO.NETADO.NET是微軟以類似于是微軟以類似于ADOADO的方式設(shè)計(jì)并實(shí)現(xiàn)的專用于的方式設(shè)計(jì)并實(shí)現(xiàn)的專用于. .NETNET平臺(tái)的新技術(shù)。平臺(tái)的新技術(shù)。它提供一個(gè)面向?qū)ο蟮臄?shù)據(jù)存取構(gòu)架。它提供一個(gè)面向?qū)ο蟮臄?shù)據(jù)存取構(gòu)架。 可以使用 ADO.NET 的兩個(gè)組件來(lái)訪問(wèn)和處理數(shù)據(jù): .NET Framework 數(shù)據(jù)提供程序 DataSetNET Framework 數(shù)據(jù)提供程序數(shù)據(jù)提供程序 .NET Framework 數(shù)據(jù)提供程序是專門(mén)為數(shù)據(jù)處理以及快速地只進(jìn)、只讀訪問(wèn)數(shù)據(jù)而設(shè)計(jì)的組件。Connection 對(duì)象提供與數(shù)
2、據(jù)源的連接。Command 對(duì)象使您能夠訪問(wèn)用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲(chǔ)過(guò)程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫(kù)命令。DataReader 從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流。最后,DataAdapter 提供連接 DataSet 對(duì)象和數(shù)據(jù)源的橋梁。DataAdapter 使用 Command 對(duì)象在數(shù)據(jù)源中執(zhí)行 SQL 命令,以便將數(shù)據(jù)加載到 DataSet 中,并使對(duì) DataSet 中數(shù)據(jù)的更改與數(shù)據(jù)源保持一致。DataSet ADO.NET DataSet 專門(mén)為獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問(wèn)而設(shè)計(jì)。因此,它可以用于多種不同的數(shù)據(jù)源,用于 XML 數(shù)據(jù),或用于管理應(yīng)用程序本地的數(shù)據(jù)。DataSe
3、t 包含一個(gè)或多個(gè) DataTable 對(duì)象的集合,這些對(duì)象由數(shù)據(jù)行和數(shù)據(jù)列以及有關(guān) DataTable 對(duì)象中數(shù)據(jù)的主鍵、外鍵、約束和關(guān)系信息組成。選擇選擇 DataReader 或或 DataSet 在決定應(yīng)用程序應(yīng)使用 DataReader還是應(yīng)使用 DataSet時(shí),應(yīng)考慮應(yīng)用程序所需的功能類型。DataSet 用于執(zhí)行以下功能: 在應(yīng)用程序中將數(shù)據(jù)緩存在本地,以便可以對(duì)數(shù)據(jù)進(jìn)行處理。如果只需要讀取查詢結(jié)果,DataReader 是更好的選擇。 在層間或從 XML Web 服務(wù)對(duì)數(shù)據(jù)進(jìn)行遠(yuǎn)程處理。 與數(shù)據(jù)進(jìn)行動(dòng)態(tài)交互,例如綁定到 Windows 窗體控件或組合并關(guān)聯(lián)來(lái)自多個(gè)源的數(shù)據(jù)。
4、對(duì)數(shù)據(jù)執(zhí)行大量的處理,而不需要與數(shù)據(jù)源保持打開(kāi)的連接,從而將該連接釋放給其他客戶端使用。21.2 ADO.NET數(shù)據(jù)提供程序ADO.NET 操作數(shù)據(jù)庫(kù)結(jié)構(gòu)圖本章內(nèi)容本章內(nèi)容.NET 數(shù)據(jù)提供程序類型. .NET Framework 數(shù)據(jù)提供程序數(shù)據(jù)提供程序 說(shuō)說(shuō) 明明SQL Server .NET 數(shù)據(jù)提供程序數(shù)據(jù)提供程序Microsoft SQL Server 數(shù)據(jù)源數(shù)據(jù)源System.Data.SqlClient 命名空間命名空間OLE DB .NET 數(shù)據(jù)提供程序數(shù)據(jù)提供程序OLE DB 公開(kāi)的數(shù)據(jù)源公開(kāi)的數(shù)據(jù)源System.Data.OleDb 命名空間命名空間ODBC .NET 數(shù)據(jù)
5、提供程序數(shù)據(jù)提供程序ODBC 公開(kāi)的數(shù)據(jù)源公開(kāi)的數(shù)據(jù)源System.Data.Odbc 命名空間命名空間Oracle .NET 數(shù)據(jù)提供程序數(shù)據(jù)提供程序Oracle 數(shù)據(jù)源數(shù)據(jù)源System.Data.OracleClient 命名空間命名空間21.6 創(chuàng)建Autolot數(shù)據(jù)庫(kù)2021-10-1621.7 連接和檢索數(shù)據(jù)數(shù)據(jù)庫(kù)命令對(duì)象數(shù)據(jù)庫(kù)命令對(duì)象CommandCommandSqlCommand SqlCommand 、OleDbCommandOleDbCommand提供存取數(shù)據(jù)庫(kù)的命令(包括:提供存取數(shù)據(jù)庫(kù)的命令(包括:SelectSelect、InsertInsert、DeleteDele
6、te、UpdateUpdate)提供數(shù)據(jù)源(庫(kù))的連接,針對(duì)不同的數(shù)據(jù)庫(kù)有不同的連接對(duì)象;提供數(shù)據(jù)源(庫(kù))的連接,針對(duì)不同的數(shù)據(jù)庫(kù)有不同的連接對(duì)象;數(shù)據(jù)庫(kù)連接對(duì)象數(shù)據(jù)庫(kù)連接對(duì)象ConnectionConnectionSqlSqlConnectionConnection 、OleDbOleDbConnectionConnection四個(gè)對(duì)象四個(gè)對(duì)象數(shù)據(jù)庫(kù)閱讀器數(shù)據(jù)庫(kù)閱讀器 DataReaderDataReader通過(guò)通過(guò)CommandCommand執(zhí)行執(zhí)行SQLSQL命令可提供一個(gè)向前的數(shù)據(jù)流。供應(yīng)用程序讀取。命令可提供一個(gè)向前的數(shù)據(jù)流。供應(yīng)用程序讀取。DataAdapterDataAdapte
7、r含兩個(gè)主要成員,含兩個(gè)主要成員,ConnectionConnection及一組及一組CommandCommand對(duì)象,通過(guò)構(gòu)造函對(duì)象,通過(guò)構(gòu)造函數(shù)可以為這兩個(gè)對(duì)象賦值。它可以向數(shù)可以為這兩個(gè)對(duì)象賦值。它可以向DataSetDataSet裝載表數(shù)據(jù)。裝載表數(shù)據(jù)。數(shù)據(jù)庫(kù)適配器數(shù)據(jù)庫(kù)適配器DataAdapterDataAdapterSqlSqlDataAdapter DataAdapter 、OleDbOleDbDataAdapteDataAdapte21.8 使用 Connection應(yīng)用程序應(yīng)用程序請(qǐng)求數(shù)據(jù)請(qǐng)求數(shù)據(jù)Connection橋梁橋梁連接數(shù)據(jù)庫(kù)示例 連接到本機(jī)的 AutoLot數(shù)據(jù)庫(kù)演
8、示示例演示示例1 1:測(cè)試測(cè)試 AutoLot 數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)連接示例1 代碼分析 關(guān)鍵代碼回顧/ 數(shù)據(jù)庫(kù)連接字符串?dāng)?shù)據(jù)庫(kù)連接字符串string connString = Data Source= . ;Initial Catalog= AutoLot;User ID=sa;pwd=*;/ 創(chuàng)建創(chuàng)建 Connection 對(duì)象對(duì)象SqlConnection connection = new SqlConnection(connString); / 打開(kāi)數(shù)據(jù)庫(kù)連接打開(kāi)數(shù)據(jù)庫(kù)連接connection.Open();Console.WriteLine(打開(kāi)數(shù)據(jù)庫(kù)連接成功打開(kāi)數(shù)據(jù)庫(kù)連接成功); /
9、關(guān)閉數(shù)據(jù)庫(kù)連接關(guān)閉數(shù)據(jù)庫(kù)連接connection.Close();Console.WriteLine(關(guān)閉數(shù)據(jù)庫(kù)連接成功關(guān)閉數(shù)據(jù)庫(kù)連接成功);表示本機(jī)表示本機(jī)Connection 主要成員必須顯式關(guān)閉連接必須顯式關(guān)閉連接屬性名稱屬性名稱說(shuō)說(shuō) 明明ConnectionString 連接字符串連接字符串方法方法說(shuō)說(shuō) 明明Open()打開(kāi)數(shù)據(jù)庫(kù)連接打開(kāi)數(shù)據(jù)庫(kù)連接Close()關(guān)閉數(shù)據(jù)庫(kù)連接關(guān)閉數(shù)據(jù)庫(kù)連接連接數(shù)據(jù)庫(kù)步驟連接數(shù)據(jù)庫(kù)的步驟:1、定義連接字符串2、創(chuàng)建、創(chuàng)建 Connection 對(duì)象對(duì)象3、打開(kāi)與數(shù)據(jù)庫(kù)的連接、打開(kāi)與數(shù)據(jù)庫(kù)的連接Data Source=服務(wù)器名服務(wù)器名;Initial Ca
10、talog=數(shù)據(jù)庫(kù)名數(shù)據(jù)庫(kù)名; User ID=用戶名用戶名;Pwd=密碼密碼SqlConnection connection = new SqlConnection(connString);連接字符串連接字符串connection.Open( );沒(méi)有密碼,可省略沒(méi)有密碼,可省略Connection 對(duì)象命名空間命名空間對(duì)應(yīng)的對(duì)應(yīng)的 Connection 對(duì)象對(duì)象System.Data.SqlClient SqlConnectionSystem.Data.OleDbOleDbConnectionSystem.Data.Odbc OdbcConnectionSystem.Data.Oracle
11、ClientOracleConnection不同命名空間的不同命名空間的 Connection 對(duì)象對(duì)象小結(jié)連接到本機(jī)的連接到本機(jī)的 pubs 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)/ 連接字符串連接字符串string connString = Data Source=.;Initial Catalog=pubs;User ID=sa;/ 創(chuàng)建創(chuàng)建Connection 對(duì)象對(duì)象 SqlConnection connection = new SqlConnection(connString);connection.Open( ); / 打開(kāi)數(shù)據(jù)庫(kù)連接打開(kāi)數(shù)據(jù)庫(kù)連接connection.Close( ); / 關(guān)閉數(shù)據(jù)庫(kù)連
12、接關(guān)閉數(shù)據(jù)庫(kù)連接關(guān)鍵代碼關(guān)鍵代碼參考答案參考答案為什么使用異常處理應(yīng)用程序應(yīng)用程序打開(kāi)數(shù)據(jù)庫(kù)打開(kāi)數(shù)據(jù)庫(kù)處理數(shù)據(jù)處理數(shù)據(jù)與數(shù)據(jù)庫(kù)的連接中斷與數(shù)據(jù)庫(kù)的連接中斷無(wú)法打開(kāi)數(shù)據(jù)庫(kù)無(wú)法打開(kāi)數(shù)據(jù)庫(kù)無(wú)法操作數(shù)據(jù)無(wú)法操作數(shù)據(jù)出現(xiàn)意外錯(cuò)誤!出現(xiàn)意外錯(cuò)誤!出現(xiàn)異常出現(xiàn)異常異常處理 異常:在運(yùn)行時(shí)發(fā)生的錯(cuò)誤 異常處理:預(yù)知可能發(fā)生的異常,在程序中編碼處理操作數(shù)據(jù)庫(kù)時(shí)可能發(fā)生異常:操作數(shù)據(jù)庫(kù)時(shí)可能發(fā)生異常: 無(wú)法打開(kāi)數(shù)據(jù)庫(kù)無(wú)法打開(kāi)數(shù)據(jù)庫(kù) 無(wú)法讀取數(shù)據(jù)無(wú)法讀取數(shù)據(jù) 數(shù)據(jù)操作出錯(cuò)數(shù)據(jù)操作出錯(cuò) 如何處理異常2-1 使用 trycatch 塊捕獲和處理異常try connection.Open(); / connection.
13、Close();catch(處理的異常類型處理的異常類型) / 錯(cuò)誤處理代碼錯(cuò)誤處理代碼處理異常的代碼處理異常的代碼出現(xiàn)異常,跳到出現(xiàn)異常,跳到catch否則正常向下執(zhí)行否則正常向下執(zhí)行出出現(xiàn)現(xiàn)異異常,常,跳跳轉(zhuǎn)轉(zhuǎn)連接關(guān)閉語(yǔ)句連接關(guān)閉語(yǔ)句將不被執(zhí)行將不被執(zhí)行包含可能出現(xiàn)異常的代碼包含可能出現(xiàn)異常的代碼如何處理異常2-2 finally 塊無(wú)論是否發(fā)生異常,都會(huì)執(zhí)行try connection.open(); / catch(處理的異常類型處理的異常類型) finally connection.Close();可能出現(xiàn)異常的代碼可能出現(xiàn)異常的代碼處理異常的代碼處理異常的代碼是否發(fā)生異常是否發(fā)生異
14、常數(shù)據(jù)庫(kù)連接都會(huì)關(guān)閉數(shù)據(jù)庫(kù)連接都會(huì)關(guān)閉必須執(zhí)行的語(yǔ)句必須執(zhí)行的語(yǔ)句放在放在 finally 中中無(wú)論如何都會(huì)執(zhí)行的代碼無(wú)論如何都會(huì)執(zhí)行的代碼connection.Open();Console.WriteLine(打開(kāi)數(shù)據(jù)庫(kù)連接完畢打開(kāi)數(shù)據(jù)庫(kù)連接完畢); connection.Close();Console.WriteLine(關(guān)閉數(shù)據(jù)庫(kù)連接完畢關(guān)閉數(shù)據(jù)庫(kù)連接完畢);處理異常 修改示例1的代碼,增加 try 語(yǔ)句塊演示示例演示示例2 2:使用:使用try-catch-finally小結(jié)如果如果 try 中中沒(méi)有出現(xiàn)異常沒(méi)有出現(xiàn)異常, 輸出哪幾行信息?輸出哪幾行信息?try / 可能出現(xiàn)異常的代碼
15、可能出現(xiàn)異常的代碼 Console.WriteLine(try塊塊); catch (Exception e) Console.WriteLine(catch塊塊);finally Console.WriteLine(finally塊塊);顯示顯示顯示顯示不顯示不顯示使用元素 添加config文件 提取連接字符串 string ConnString = ConfigurationManager.ConnectionStringsAutoLotSqlProvider.ConnectionString; 注:首先,添加對(duì)System.Configuration.dll 文件的引用;使用using
16、using (SqlConnection conn = new SqlConnection(ConnString) 練習(xí)測(cè)試AutoLot的數(shù)據(jù)連接 需求說(shuō)明: 創(chuàng)建My AutoLot Base控制臺(tái)程序 新建用于操作數(shù)據(jù)庫(kù)的DBOperation類 在DBOperation類中自定義數(shù)據(jù)庫(kù)連接方法,實(shí)現(xiàn)連接和關(guān)閉AutoLot數(shù)據(jù)庫(kù)完成時(shí)間:完成時(shí)間:20分鐘分鐘練習(xí)為連接操作添加異常 需求說(shuō)明: 為數(shù)據(jù)庫(kù)連接增加異常處理 將數(shù)據(jù)庫(kù)服務(wù)停止,再次測(cè)試連接操作完成時(shí)間:完成時(shí)間:15分鐘分鐘21.8.3 使用Command應(yīng)用程序應(yīng)用程序打開(kāi)數(shù)據(jù)庫(kù)打開(kāi)數(shù)據(jù)庫(kù)處理數(shù)據(jù)處理數(shù)據(jù)Connectio
17、n怎樣處理數(shù)據(jù)怎樣處理數(shù)據(jù)提交提交SQL命令并從數(shù)據(jù)源中返回結(jié)果命令并從數(shù)據(jù)源中返回結(jié)果 Command 的主要成員屬性名稱屬性名稱說(shuō)說(shuō) 明明Connection Command對(duì)象使用的數(shù)據(jù)庫(kù)連接對(duì)象使用的數(shù)據(jù)庫(kù)連接CommandText執(zhí)行的執(zhí)行的SQL語(yǔ)句語(yǔ)句方法方法說(shuō)說(shuō) 明明 ExecuteNonQuery執(zhí)行不返回行的語(yǔ)句,如執(zhí)行不返回行的語(yǔ)句,如UPDATE等等ExecuteReader返回返回DataReader對(duì)象對(duì)象ExecuteScalar返回單個(gè)值,如執(zhí)行返回單個(gè)值,如執(zhí)行COUNT(*)操作數(shù)據(jù)庫(kù)示例完成MySchoolBase系統(tǒng)的登錄功能1、驗(yàn)證管理員的用戶名和密碼
18、是否存在2、驗(yàn)證通過(guò),顯示登錄成功信息使用 Command 步驟使用Command步驟:1、創(chuàng)建數(shù)據(jù)庫(kù)連接2、定義 SQL 語(yǔ)句3、創(chuàng)建 Command 對(duì)象4、執(zhí)行命令SqlConnection connection = new SqlConnection(connString);string sql = select count(*) from Admin where LoginId= + userName + and LoginPwd= + pwd + ;connection.Open(); / 打開(kāi)數(shù)據(jù)庫(kù)連接打開(kāi)數(shù)據(jù)庫(kù)連接SqlCommand command = new SqlComm
19、and(sql, connection);int num = (int)command.ExecuteScalar();示例示例 3 關(guān)鍵代碼:關(guān)鍵代碼:執(zhí)行命令前,必須打開(kāi)數(shù)據(jù)庫(kù)連接!執(zhí)行命令前,必須打開(kāi)數(shù)據(jù)庫(kù)連接!要進(jìn)行類型轉(zhuǎn)換!要進(jìn)行類型轉(zhuǎn)換!分析示例3定義一個(gè)定義一個(gè) ValidateUser() 方法方法需要需要 Connection 和和 Command 對(duì)象對(duì)象分兩步實(shí)現(xiàn)驗(yàn)證分兩步實(shí)現(xiàn)驗(yàn)證:1、建立數(shù)據(jù)庫(kù)連接、建立數(shù)據(jù)庫(kù)連接2、驗(yàn)證用戶是否存在、驗(yàn)證用戶是否存在 定義一個(gè)定義一個(gè) CheckLogin () 方法用于顯方法用于顯示示ValidateUser() 返回的結(jié)果信息返回
20、的結(jié)果信息分析驗(yàn)證方法ValidateUser() 方法框架1、驗(yàn)證的結(jié)果:通過(guò),不通過(guò)、驗(yàn)證的結(jié)果:通過(guò),不通過(guò)返回值為返回值為 bool 型型2、方法需要:、方法需要: 用戶名,密碼用戶名,密碼值方式傳參值方式傳參3、不通過(guò)的原因:、不通過(guò)的原因: 用戶名或密碼不存在、其他原因用戶名或密碼不存在、其他原因引用方式傳參引用方式傳參 public bool ValidateUser (string userName, string pwd, ref string strMsg) 用戶驗(yàn)證方法具體實(shí)現(xiàn) 第一步:創(chuàng)建數(shù)據(jù)庫(kù)連接第二步:查詢用戶是否存在第二步:查詢用戶是否存在SELECT COUNT
21、(*)ExecuteScalar() 方法查詢方法查詢ValidateUser() 方法具體實(shí)現(xiàn)方法具體實(shí)現(xiàn)演示示例演示示例3 3:檢查:檢查MySchoolBase用戶登錄用戶登錄21.9 使用 DataReader應(yīng)用程序應(yīng)用程序 毛毛,電信系,優(yōu)秀毛毛,電信系,優(yōu)秀 毛毛毛毛姓名:姓名:學(xué)校:學(xué)校:電信系電信系成績(jī):成績(jī):優(yōu)秀優(yōu)秀 怎樣讀取數(shù)據(jù)庫(kù)的數(shù)據(jù)?使用使用 DataReader 對(duì)象對(duì)象DataReader 對(duì)象 每次讀取一行數(shù)據(jù)命名空間命名空間對(duì)應(yīng)的對(duì)應(yīng)的 DataReader 對(duì)象對(duì)象System.Data.SqlClient SqlDataReaderSystem.Data.
22、OleDbOleDbDataReaderSystem.Data.Odbc OdbcDataReaderSystem.Data.OracleClientOracleDataReader使用 DataReader 查詢數(shù)據(jù)在數(shù)據(jù)庫(kù)操作類中創(chuàng)建讀取學(xué)生列表方法在數(shù)據(jù)庫(kù)操作類中創(chuàng)建讀取學(xué)生列表方法使用使用 DataReader 讀取學(xué)生學(xué)號(hào)和姓名讀取學(xué)生學(xué)號(hào)和姓名在業(yè)務(wù)信息類中創(chuàng)建輸出信息方法在業(yè)務(wù)信息類中創(chuàng)建輸出信息方法在菜單選項(xiàng)中添加輸出信息方法在菜單選項(xiàng)中添加輸出信息方法 如何查看學(xué)生學(xué)號(hào)、姓名列表? 演示示例:使用演示示例:使用 DataReader 讀取數(shù)據(jù)讀取數(shù)據(jù)示例2代碼分析 關(guān)鍵代碼回
23、顧:示例示例2 2源代碼源代碼command.ExecuteReader(); / 執(zhí)行查詢執(zhí)行查詢SqlDataReader reader = _dbOper.GetStudentList();/取得學(xué)生用戶列表取得學(xué)生用戶列表方法方法/循環(huán)讀取循環(huán)讀取DataReaderwhile (reader.Read() Console.Write(readerStudentNo + t); Console.WriteLine(readerStudentName); /關(guān)閉關(guān)閉DataReaderreader.Close();循環(huán)讀取數(shù)據(jù)行循環(huán)讀取數(shù)據(jù)行并顯示并顯示DataReader 的主要成員屬
24、性屬性說(shuō)明說(shuō)明HasRows 是否返回了結(jié)果是否返回了結(jié)果方法方法說(shuō)明說(shuō)明 Read前進(jìn)到下一行記錄前進(jìn)到下一行記錄Close關(guān)閉關(guān)閉 DataReader 對(duì)象對(duì)象 DataReader 的主要成員:DataReader 使用步驟小結(jié)使用 DataReader 檢索數(shù)據(jù)的步驟:1、創(chuàng)建 Command 對(duì)象2、調(diào)用 ExecuteReader() 創(chuàng)建 DataReader 對(duì)象3、使用 DataReader 的 Read() 方法逐行讀取數(shù)據(jù)4、讀取某列的數(shù)據(jù),(type)dataReader 5、關(guān)閉 DataReader 對(duì)象獲取某列的值:獲取某列的值:方法一:指定列的索引,從方法一:
25、指定列的索引,從0開(kāi)始開(kāi)始方法二:指定列名方法二:指定列名注意:注意:DataReader 使用后必須關(guān)閉使用后必須關(guān)閉指導(dǎo)實(shí)現(xiàn)學(xué)生姓名查詢 訓(xùn)練要點(diǎn): DataReader對(duì)象的使用 需求說(shuō)明: 當(dāng)管理員輸入操作鍵“3”時(shí),給予輸入學(xué)號(hào)的提示,根據(jù)輸入查詢Student表中匹配學(xué)號(hào)的學(xué)生姓名,將學(xué)生學(xué)號(hào)和姓名一并輸出講解需求說(shuō)明講解需求說(shuō)明 實(shí)現(xiàn)思路 1、在數(shù)據(jù)庫(kù)操作類中創(chuàng)建查詢學(xué)生姓名的方法 2、使用StringBuilder拼寫(xiě)帶條件的Sql語(yǔ)句 3、使用DataReader對(duì)象的Read()方法讀取學(xué)生姓名并返回 4、在業(yè)務(wù)類中調(diào)用查詢方法并輸出返回的學(xué)生姓名 難點(diǎn)指導(dǎo): 執(zhí)行Comm
26、and對(duì)象的ExecuteReader()方法得到Reader對(duì)象 學(xué)號(hào)為主鍵,只能讀取至多一行信息,固使用if語(yǔ)句完成時(shí)間:完成時(shí)間:25分鐘分鐘指導(dǎo)實(shí)現(xiàn)學(xué)生姓名查詢指導(dǎo)實(shí)現(xiàn)學(xué)生信息查詢 訓(xùn)練要點(diǎn): DataReader對(duì)象的使用 Sql語(yǔ)句的拼寫(xiě) 需求說(shuō)明: 當(dāng)管理員輸入操作鍵“4”時(shí),給予輸入學(xué)生姓名的提示,根據(jù)姓名模糊查詢Student表中除密碼外的全部信息并顯示,年級(jí)根據(jù)實(shí)際編號(hào)顯示年級(jí)名稱講解需求說(shuō)明講解需求說(shuō)明 實(shí)現(xiàn)思路 1、在數(shù)據(jù)庫(kù)操作類中創(chuàng)建查詢學(xué)生信息的方法 2、使用StringBuilder拼寫(xiě)內(nèi)連接的Sql語(yǔ)句 3、使用DataReader對(duì)象的Read()方法循環(huán)讀取
27、學(xué)生信息 4、在業(yè)務(wù)類中調(diào)用查詢學(xué)生信息的方法并輸出 關(guān)鍵代碼:完成時(shí)間:完成時(shí)間:25分鐘分鐘指導(dǎo)實(shí)現(xiàn)學(xué)生信息查詢SELECT A.StudentNo ,A.StudentName ,A.Sex ,B.GradeName ,A.Phone ,A.Adress ,A.BornDate ,A.EmailFROM Student as A ,Grade as BWHERE StudentName like %學(xué)生姓名學(xué)生姓名%AND A.GradeId=B.GradeId操作數(shù)據(jù)應(yīng)用程序應(yīng)用程序毛毛,電信系,良好毛毛,電信系,良好 毛毛毛毛姓名:姓名:系部:系部:電信系電信系成績(jī):成績(jī):良好良好
28、如何對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行增刪改?使用使用 ExecuteNonQuery() 方法方法操作數(shù)據(jù)示例1、構(gòu)件增加年級(jí)信息的、構(gòu)件增加年級(jí)信息的Sql語(yǔ)句語(yǔ)句2、創(chuàng)建、創(chuàng)建SqlCommand對(duì)象對(duì)象3、使用、使用 ExecuteNonQuery() 方法向數(shù)據(jù)庫(kù)增方法向數(shù)據(jù)庫(kù)增加記錄加記錄4、處理返回結(jié)果、處理返回結(jié)果如何實(shí)現(xiàn)新增年級(jí)信息呢?如何實(shí)現(xiàn)新增年級(jí)信息呢? 演示示例:演示示例:向數(shù)據(jù)庫(kù)增加記錄向數(shù)據(jù)庫(kù)增加記錄示例 3代碼分析 關(guān)鍵代碼回顧:示例示例3 3源代碼源代碼StringBuilder sb = new StringBuilder();sb.AppendLine(INSERT IN
29、TO);sb.AppendLine( Grade);sb.AppendLine(VALUES);sb.AppendLine( ( + gradeName + );/ 創(chuàng)建創(chuàng)建command對(duì)象對(duì)象SqlCommand command = new SqlCommand(sb.ToString(), conn);/ 執(zhí)行命令執(zhí)行命令command.ExecuteNonQuery(); 返回受影響記錄的行數(shù)返回受影響記錄的行數(shù)單引號(hào)的位置單引號(hào)的位置ExecuteNonQuery()方法小結(jié) 該方法執(zhí)行指定的 sql 語(yǔ)句 返回受影響的行數(shù)使用使用 ExecuteNonQuery() 的步驟小結(jié):的
30、步驟小結(jié):1、創(chuàng)建、創(chuàng)建 Connection 對(duì)象對(duì)象2、定義、定義sql 語(yǔ)句語(yǔ)句3、創(chuàng)建、創(chuàng)建 Command 對(duì)象對(duì)象4、執(zhí)行、執(zhí)行 ExecuteNonQuery() 方法方法5、根據(jù)返回的結(jié)果進(jìn)行處理、根據(jù)返回的結(jié)果進(jìn)行處理練習(xí)實(shí)現(xiàn)年級(jí)信息的創(chuàng)建 需求說(shuō)明: 實(shí)現(xiàn)將管理員輸入的年級(jí)名稱添加到年級(jí)表中,并輸出添加結(jié)果提示完成時(shí)間:完成時(shí)間:20分鐘分鐘指導(dǎo)實(shí)現(xiàn)出生日的修改 訓(xùn)練要點(diǎn): 類型轉(zhuǎn)換 Command對(duì)象的ExecuteNonQuery()方法 需求說(shuō)明: 當(dāng)管理員輸入操作鍵“6”時(shí),給予輸入要修改的學(xué)生學(xué)號(hào)和修改后的出生日的提示,根據(jù)學(xué)號(hào)更新Student表中的出生日 出生
31、日輸入格式錯(cuò)誤、更新成功以及異常發(fā)生給出相應(yīng)提示信息 確認(rèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)被成功更新講解需求說(shuō)明講解需求說(shuō)明 實(shí)現(xiàn)思路 1、在數(shù)據(jù)庫(kù)操作類中創(chuàng)建更新方法 2、使用StringBuilder拼寫(xiě)條件更新的Sql語(yǔ)句 3、使用Command對(duì)象的ExecuteNonQuery()方法根據(jù)學(xué)號(hào)更新出生日 4、在業(yè)務(wù)類中調(diào)用更新方法,使用異常處理捕獲輸入錯(cuò)誤的出生日 難點(diǎn)指導(dǎo): 執(zhí)行Command對(duì)象的ExecuteNonQuery()方法執(zhí)行對(duì)數(shù)據(jù)庫(kù)的修改操作 可以使用Convert.ToDateTime()方法轉(zhuǎn)換管理員輸入的出生日完成時(shí)間:完成時(shí)間:25分鐘分鐘指導(dǎo)實(shí)現(xiàn)出生日的修改練習(xí)實(shí)現(xiàn)學(xué)生信息
32、的刪除 需求說(shuō)明: 當(dāng)管理員輸入操作鍵“7”時(shí),給予輸入刪除的學(xué)生學(xué)號(hào)的提示 根據(jù)學(xué)號(hào)刪除Student表中的學(xué)生信息 確認(rèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)被成功刪除完成時(shí)間:完成時(shí)間:20分鐘分鐘21.10 構(gòu)建可重用的數(shù)據(jù)訪問(wèn)庫(kù) 構(gòu)建AutoLotDAL.dll 類庫(kù)項(xiàng)目 /連接數(shù)據(jù)庫(kù) private SqlConnection conn = null; public void OpenConnection(string connString) conn = new SqlConnection(connString); conn.Open(); public void CloseConnection() conn.Close(); /只讀查詢 返回DataReader public SqlDataR
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全新三輪車(chē)銷(xiāo)售合同3篇
- 借款合同的解除協(xié)議爭(zhēng)議解決機(jī)構(gòu)3篇
- 劇院舞臺(tái)互動(dòng)顯示屏采購(gòu)協(xié)議2篇
- 商業(yè)贊助合同模板3篇
- 只投資不參與經(jīng)營(yíng)協(xié)議書(shū)范本3篇
- 勞務(wù)合同與勞動(dòng)合同區(qū)別與合規(guī)2篇
- 琴行兼職老師合同范例
- 武漢商貿(mào)職業(yè)學(xué)院《社交禮儀》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢晴川學(xué)院《數(shù)學(xué)物理方程Ⅰ》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢輕工大學(xué)《火電廠煙氣凈化Ⅱ》2023-2024學(xué)年第一學(xué)期期末試卷
- 《概率論與數(shù)理統(tǒng)計(jì)》教材
- 高等傳熱學(xué)全冊(cè)課件
- 建筑施工安全風(fēng)險(xiǎn)辨識(shí)分級(jí)管控指南494條-副本
- 橙子主題課程設(shè)計(jì)
- 靜脈留置針?biāo)蚂o脈炎的標(biāo)準(zhǔn)化護(hù)理預(yù)防流程
- 常住人口登記表(集體戶口)-英文翻譯
- ??啤斗ɡ韺W(xué)》(第三版教材)形成性考核試題及答案
- 廣西百色市縣級(jí)市2023-2024學(xué)年八年級(jí)上學(xué)期期末檢測(cè)物理試題(原卷版)
- 人教版2024年新教材七年級(jí)上冊(cè)英語(yǔ)各單元考點(diǎn)復(fù)習(xí)提綱
- 山東省物業(yè)管理?xiàng)l例
- 一年級(jí)小學(xué)數(shù)學(xué)下冊(cè)應(yīng)用題800道
評(píng)論
0/150
提交評(píng)論