C#語(yǔ)言和數(shù)據(jù)庫(kù)技術(shù)基礎(chǔ)TP15_第1頁(yè)
C#語(yǔ)言和數(shù)據(jù)庫(kù)技術(shù)基礎(chǔ)TP15_第2頁(yè)
C#語(yǔ)言和數(shù)據(jù)庫(kù)技術(shù)基礎(chǔ)TP15_第3頁(yè)
C#語(yǔ)言和數(shù)據(jù)庫(kù)技術(shù)基礎(chǔ)TP15_第4頁(yè)
C#語(yǔ)言和數(shù)據(jù)庫(kù)技術(shù)基礎(chǔ)TP15_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

使用ADO.NET查詢和操作數(shù)據(jù)第十五章回顧與作業(yè)點(diǎn)評(píng)Connection對(duì)象的作用是什么?ExecuteScalar()方法返回的結(jié)果是什么?提問(wèn)2/34預(yù)習(xí)檢查使用DataReader的什么方法可以逐行讀取數(shù)據(jù)?ExecuteNonQuery()方法的功能是什么?提問(wèn)3/34本章任務(wù)實(shí)現(xiàn)MySchoolBase系統(tǒng)查看學(xué)生信息按學(xué)號(hào)查詢學(xué)生姓名按姓名查詢學(xué)生信息新增年級(jí)記錄修改學(xué)生出生日期刪除學(xué)生記錄4/34本章目標(biāo)掌握C#中的StringBuilder類(lèi)的常用方法會(huì)使用DataReader對(duì)象檢索數(shù)據(jù)會(huì)使用Command對(duì)象操作數(shù)據(jù)5/34字符串的修改說(shuō)出下面代碼的輸出結(jié)果stringstrText="Hello";strText+="World";Console.WriteLine(strText);你知道程序是如何執(zhí)行的嗎?HelloWorldstrTextHelloHelloWorldstrText每次修改strText,不是追加而是都要?jiǎng)?chuàng)建一個(gè)新的字符串對(duì)象代碼閱讀垃圾6/34StringBuilder類(lèi)能否做到重復(fù)修改時(shí),不創(chuàng)建新的對(duì)象?使用StringBuilder類(lèi)StringBuilder類(lèi):用來(lái)定義可變字符串更多方法可以通過(guò)MSDN自學(xué)了解問(wèn)題方法說(shuō)明StringBuilderAppend(stringvalue

)在結(jié)尾追加StringBuilderInsert(intindex,stringvalue

)在指定位置插入指定字符串StringBuilderRemove(int

startIndex,

intlength

)移除指定字符串7/34StringBuilder類(lèi)的使用2-1使用StringBuilder類(lèi)修改上述代碼

StringBuildersbTest=newStringBuilder();sbTest.Append("Hello");sbTest.Append("World");Console.WriteLine(sbTest.ToString());Console.ReadLine();轉(zhuǎn)成String類(lèi)型實(shí)例化一個(gè)StringBuilder對(duì)象以下SQL語(yǔ)句哪個(gè)可讀性更高,更易修改?SELECTSubjectNo,SubjectName,ClassHour,GradeFROMSubjectSELECT[SubjectNo],[SubjectName],[ClassHour],[Grade]FROM[Subject]8/34提問(wèn)StringBuilder類(lèi)的使用2-2使用StringBuilder類(lèi)修改MySchoolBase中的查詢學(xué)生數(shù)量功能關(guān)鍵代碼回顧StringBuildersbSql=newStringBuilder();sbSql.AppendLine("SELECT");sbSql.AppendLine("COUNT(*)");sbSql.AppendLine("FROM");sbSql.AppendLine("[Student]");//…SqlCommandcomm=newSqlCommand(sbSql.ToString(),conn);//…易于修改和查看示例演示示例1:使用StringBuilder修改MySchoolBase9/34為什么使用DataReader怎樣讀取數(shù)據(jù)庫(kù)的數(shù)據(jù)?應(yīng)用程序毛毛,北大青鳥(niǎo),優(yōu)秀毛毛姓名:學(xué)校:北大青鳥(niǎo)成績(jī):優(yōu)秀DataReader數(shù)據(jù)庫(kù)10/34問(wèn)題DataReader對(duì)象DataReader對(duì)象從數(shù)據(jù)源中檢索只讀、只進(jìn)的數(shù)據(jù)流每次讀取一行數(shù)據(jù)命名空間對(duì)應(yīng)的DataReader

對(duì)象System.Data.SqlClient

SqlDataReaderSystem.Data.OleDbOleDbDataReaderSystem.Data.Odbc

OdbcDataReaderSystem.Data.OracleClientOracleDataReader11/34使用DataReader查詢數(shù)據(jù)如何查看學(xué)生學(xué)號(hào)、姓名列表?要查詢多行多列的數(shù)據(jù),需要使用Command對(duì)象的ExecuteReader(

)方法分析問(wèn)題演示示例2:用DataReader讀取數(shù)據(jù)1使用Connection連接數(shù)據(jù)庫(kù)使用Command發(fā)送命令使用DataReader處理查詢結(jié)果12/34示例2代碼分析關(guān)鍵代碼回顧SqlDataReaderreader=comm.ExecuteReader();//獲得DataReader對(duì)象//…//循環(huán)讀取數(shù)據(jù)行并顯示while(reader.Read()){sb1.AppendFormat("{0}\t{1}",reader["StudentNo"],reader["StudentName"]);Console.WriteLine(sb1);sb1.Length=0;}//…reader.Close();//關(guān)閉DataReader13/34改進(jìn)示例2演示示例3:用DataReader讀取數(shù)據(jù)2經(jīng)驗(yàn)改進(jìn)示例2,分別使用不同的方法實(shí)現(xiàn)讀取數(shù)據(jù)和顯示數(shù)據(jù)問(wèn)題實(shí)際開(kāi)發(fā)中,操作數(shù)據(jù)庫(kù)的代碼和處理數(shù)據(jù)的代碼一般是分開(kāi)的,這樣可以使程序更易于復(fù)用和維護(hù)讀取數(shù)據(jù)DBOperation類(lèi)中的GetStudentList(

)方法,返回一個(gè)DataReader對(duì)象顯示數(shù)據(jù)SchoolManager類(lèi)中的ShowStudentList(

)方法分析14/34示例3代碼分析關(guān)鍵代碼回顧comm.ExecuteReader(CommandBehavior.CloseConnection);//執(zhí)行查詢SqlDataReaderreader=_dbOper.GetStudentList();//調(diào)用獲得學(xué)生信息的方法//…//循環(huán)讀取DataReaderwhile(reader.Read()){sb1.AppendFormat("{0}\t{1}",reader["StudentNo"],reader["StudentName"]);Console.WriteLine(sb1);sb1.Length=0;}//…reader.Close();//關(guān)閉DataReader15/34DataReader的主要成員DataReader的主要成員屬性說(shuō)明HasRows

是否返回了結(jié)果方法說(shuō)明

Read前進(jìn)到下一行記錄Close關(guān)閉DataReader

對(duì)象16/34DataReader使用步驟小結(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ì)象獲取某列的值:方法一:指定列的索引,從0開(kāi)始方法二:指定列名注意17/34DataReader

使用后必須關(guān)閉學(xué)員操作——按學(xué)號(hào)查詢學(xué)生姓名2-1需求說(shuō)明當(dāng)管理員輸入操作鍵“3”時(shí),根據(jù)輸入的學(xué)號(hào)查詢相應(yīng)的學(xué)生姓名并輸出講解需求說(shuō)明18/34指導(dǎo)學(xué)員操作——按學(xué)號(hào)查詢學(xué)生姓名2-2實(shí)現(xiàn)思路1.在數(shù)據(jù)庫(kù)操作類(lèi)中創(chuàng)建查詢學(xué)生姓名的方法

2.使用StringBuilder拼寫(xiě)帶條件的SQL語(yǔ)句3.使用DataReader對(duì)象的Read()方法讀取學(xué)生姓名并返回4.在業(yè)務(wù)類(lèi)中調(diào)用查詢方法并輸出返回的學(xué)生姓名難點(diǎn)指導(dǎo)執(zhí)行Command對(duì)象的ExecuteReader()方法得到Reader對(duì)象學(xué)號(hào)為主鍵,只能讀取至多一行信息,固使用if語(yǔ)句指導(dǎo)完成時(shí)間:25分鐘19/34共性問(wèn)題集中講解常見(jiàn)問(wèn)題及解決辦法代碼規(guī)范問(wèn)題調(diào)試技巧共性問(wèn)題集中講解20/34學(xué)員操作——按姓名查詢學(xué)生信息2-1訓(xùn)練要點(diǎn)DataReader對(duì)象的使用SQL語(yǔ)句的拼寫(xiě)需求說(shuō)明當(dāng)管理員輸入操作鍵“4”時(shí),根據(jù)姓名模糊查詢除密碼外的全部學(xué)生信息并顯示,年級(jí)根據(jù)實(shí)際編號(hào)顯示年級(jí)名稱講解需求說(shuō)明21/34指導(dǎo)學(xué)員操作——按姓名查詢學(xué)生信息2-2實(shí)現(xiàn)思路1.在數(shù)據(jù)庫(kù)操作類(lèi)中創(chuàng)建查詢學(xué)生信息的方法

2.使用StringBuilder拼寫(xiě)內(nèi)連接的Sql語(yǔ)句3.使用DataReader對(duì)象的Read()方法循環(huán)讀取學(xué)生信息4.在業(yè)務(wù)類(lèi)中調(diào)用查詢學(xué)生信息的方法并輸出難點(diǎn)指導(dǎo)comm.ExecuteReader(CommandBehavior.CloseConnection);SELECTA.[StudentNo],A.[StudentName],A.[Sex],B.[GradeName],A.[Phone],A.[Adress],A.[BornDate],A.[Email]FROM[Student]asA,[Grade]asBWHERE[StudentName]like‘%學(xué)生姓名%'ANDA.[GradeId]=B.[GradeId]指導(dǎo)完成時(shí)間:25分鐘22/34操作數(shù)據(jù)如何對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行增刪改?應(yīng)用程序毛毛,北大青鳥(niǎo),良好毛毛姓名:學(xué)校:北大青鳥(niǎo)成績(jī):良好ExecuteNonQuery()數(shù)據(jù)庫(kù)23/34問(wèn)題操作數(shù)據(jù)示例使用SqlCommand對(duì)象的ExecuteNonQuery()方法向數(shù)據(jù)庫(kù)增加記錄如何實(shí)現(xiàn)新增年級(jí)信息?分析問(wèn)題演示示例4:向數(shù)據(jù)庫(kù)中增加記錄使用Connection連接數(shù)據(jù)庫(kù)使用Command發(fā)送命令獲得并處理執(zhí)行結(jié)果24/34示例4代碼分析關(guān)鍵代碼回顧StringBuildersb=newStringBuilder();sb.AppendLine("INSERTINTO");sb.AppendLine("[Grade]");sb.AppendLine("VALUES");sb.AppendLine("('"+gradeName+"')");//創(chuàng)建command對(duì)象SqlCommandcommand=newSqlCommand(sb.ToString(),conn);//執(zhí)行命令command.ExecuteNonQuery();//……返回受影響記錄的行數(shù)單引號(hào)的位置25/34ExecuteNonQuery()方法小結(jié)該方法執(zhí)行指定的SQL語(yǔ)句返回受影響的行數(shù)使用ExecuteNonQuery()的步驟創(chuàng)建Connection對(duì)象定義SQL語(yǔ)句創(chuàng)建Command對(duì)象執(zhí)行ExecuteNonQuery()方法根據(jù)返回的結(jié)果進(jìn)行處理26/34學(xué)員操作——新增年級(jí)記錄需求說(shuō)明在示例3的基礎(chǔ)上,完善新增年級(jí)記錄的功能要求查詢管理員輸入的年級(jí)名稱在Grade表中是否已經(jīng)存在如果指定年級(jí)名稱的記錄在Grade表中已存在,顯示提示信息,并退出該操作添加到年級(jí)表中,并根據(jù)添加結(jié)果,輸出相關(guān)的提示信息練習(xí)完成時(shí)間:20分鐘27/34學(xué)員操作——修改學(xué)生出生日期2-1訓(xùn)練要點(diǎn)類(lèi)型轉(zhuǎn)換Command對(duì)象的ExecuteNonQuery()方法需求說(shuō)明當(dāng)管理員輸入操作鍵“6”時(shí),輸入要修改的學(xué)生學(xué)號(hào)和修改后的出生日的提示,根據(jù)學(xué)號(hào)更新Student表中的出生日出生日輸入格式錯(cuò)誤、更新成功以及異常發(fā)生給出相應(yīng)提示信息確認(rèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)被成功更新講解需求說(shuō)明28/34指導(dǎo)學(xué)員操作——修改

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論