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

下載本文檔

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

文檔簡介

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

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

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

startIndex,

intlength

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

StringBuildersbTest=newStringBuilder();sbTest.Append("Hello");sbTest.Append("World");Console.WriteLine(sbTest.ToString());Console.ReadLine();轉(zhuǎn)成String類型實(shí)例化一個(gè)StringBuilder對象以下SQL語句哪個(gè)可讀性更高,更易修改?SELECTSubjectNo,SubjectName,ClassHour,GradeFROMSubjectSELECT[SubjectNo],[SubjectName],[ClassHour],[Grade]FROM[Subject]8/34提問StringBuilder類的使用2-2使用StringBuilder類修改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ù)庫的數(shù)據(jù)?應(yīng)用程序毛毛,北大青鳥,優(yōu)秀毛毛姓名:學(xué)校:北大青鳥成績:優(yōu)秀DataReader數(shù)據(jù)庫10/34問題DataReader對象DataReader對象從數(shù)據(jù)源中檢索只讀、只進(jìn)的數(shù)據(jù)流每次讀取一行數(shù)據(jù)命名空間對應(yīng)的DataReader

對象System.Data.SqlClient

SqlDataReaderSystem.Data.OleDbOleDbDataReaderSystem.Data.Odbc

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

)方法分析問題演示示例2:用DataReader讀取數(shù)據(jù)1使用Connection連接數(shù)據(jù)庫使用Command發(fā)送命令使用DataReader處理查詢結(jié)果12/34示例2代碼分析關(guān)鍵代碼回顧SqlDataReaderreader=comm.ExecuteReader();//獲得DataReader對象//…//循環(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ù)問題實(shí)際開發(fā)中,操作數(shù)據(jù)庫的代碼和處理數(shù)據(jù)的代碼一般是分開的,這樣可以使程序更易于復(fù)用和維護(hù)讀取數(shù)據(jù)DBOperation類中的GetStudentList(

)方法,返回一個(gè)DataReader對象顯示數(shù)據(jù)SchoolManager類中的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的主要成員屬性說明HasRows

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

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

對象16/34DataReader使用步驟小結(jié)使用DataReader檢索數(shù)據(jù)的步驟1.創(chuàng)建Command對象2.調(diào)用ExecuteReader()創(chuàng)建DataReader對象3.使用DataReader的Read()方法逐行讀取數(shù)據(jù)4.讀取某列的數(shù)據(jù),(type)dataReader[]5.關(guān)閉DataReader對象獲取某列的值:方法一:指定列的索引,從0開始方法二:指定列名注意17/34DataReader

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

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

2.使用StringBuilder拼寫內(nèi)連接的Sql語句3.使用DataReader對象的Read()方法循環(huán)讀取學(xué)生信息4.在業(yè)務(wù)類中調(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ù)如何對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行增刪改?應(yīng)用程序毛毛,北大青鳥,良好毛毛姓名:學(xué)校:北大青鳥成績:良好ExecuteNonQuery()數(shù)據(jù)庫23/34問題操作數(shù)據(jù)示例使用SqlCommand對象的ExecuteNonQuery()方法向數(shù)據(jù)庫增加記錄如何實(shí)現(xiàn)新增年級(jí)信息?分析問題演示示例4:向數(shù)據(jù)庫中增加記錄使用Connection連接數(shù)據(jù)庫使用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對象SqlCommandcommand=newSqlCommand(sb.ToString(),conn);//執(zhí)行命令command.ExecuteNonQuery();//……返回受影響記錄的行數(shù)單引號(hào)的位置25/34ExecuteNonQuery()方法小結(jié)該方法執(zhí)行指定的SQL語句返回受影響的行數(shù)使用ExecuteNonQuery()的步驟創(chuàng)建Connection對象定義SQL語句創(chuàng)建Command對象執(zhí)行ExecuteNonQuery()方法根據(jù)返回的結(jié)果進(jìn)行處理26/34學(xué)員操作——新增年級(jí)記錄需求說明在示例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)類型轉(zhuǎn)換Command對象的ExecuteNonQuery()方法需求說明當(dāng)管理員輸入操作鍵“6”時(shí),輸入要修改的學(xué)生學(xué)號(hào)和修改后的出生日的提示,根據(jù)學(xué)號(hào)更新Student表中的出生日出生日輸入格式錯(cuò)誤、更新成功以及異常發(fā)生給出相應(yīng)提示信息確認(rèn)數(shù)據(jù)庫中的數(shù)據(jù)被成功更新講解需求說明28/34指導(dǎo)學(xué)員操作——修改

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論