C#語言和數據庫技術基礎TP15_第1頁
C#語言和數據庫技術基礎TP15_第2頁
C#語言和數據庫技術基礎TP15_第3頁
C#語言和數據庫技術基礎TP15_第4頁
C#語言和數據庫技術基礎TP15_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

)在結尾追加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();轉成String類型實例化一個StringBuilder對象以下SQL語句哪個可讀性更高,更易修改?SELECTSubjectNo,SubjectName,ClassHour,GradeFROMSubjectSELECT[SubjectNo],[SubjectName],[ClassHour],[Grade]FROM[Subject]8/34提問StringBuilder類的使用2-2使用StringBuilder類修改MySchoolBase中的查詢學生數量功能關鍵代碼回顧StringBuildersbSql=newStringBuilder();sbSql.AppendLine("SELECT");sbSql.AppendLine("COUNT(*)");sbSql.AppendLine("FROM");sbSql.AppendLine("[Student]");//…SqlCommandcomm=newSqlCommand(sbSql.ToString(),conn);//…易于修改和查看示例演示示例1:使用StringBuilder修改MySchoolBase9/34為什么使用DataReader怎樣讀取數據庫的數據?應用程序毛毛,北大青鳥,優秀毛毛姓名:學校:北大青鳥成績:優秀DataReader數據庫10/34問題DataReader對象DataReader對象從數據源中檢索只讀、只進的數據流每次讀取一行數據命名空間對應的DataReader

對象System.Data.SqlClient

SqlDataReaderSystem.Data.OleDbOleDbDataReaderSystem.Data.Odbc

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

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

)方法,返回一個DataReader對象顯示數據SchoolManager類中的ShowStudentList(

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

是否返回了結果方法說明

Read前進到下一行記錄Close關閉DataReader

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

使用后必須關閉學員操作——按學號查詢學生姓名2-1需求說明當管理員輸入操作鍵“3”時,根據輸入的學號查詢相應的學生姓名并輸出講解需求說明18/34指導學員操作——按學號查詢學生姓名2-2實現思路1.在數據庫操作類中創建查詢學生姓名的方法

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

2.使用StringBuilder拼寫內連接的Sql語句3.使用DataReader對象的Read()方法循環讀取學生信息4.在業務類中調用查詢學生信息的方法并輸出難點指導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‘%學生姓名%'ANDA.[GradeId]=B.[GradeId]指導完成時間:25分鐘22/34操作數據如何對數據庫的數據進行增刪改?應用程序毛毛,北大青鳥,良好毛毛姓名:學校:北大青鳥成績:良好ExecuteNonQuery()數據庫23/34問題操作數據示例使用SqlCommand對象的ExecuteNonQuery()方法向數據庫增加記錄如何實現新增年級信息?分析問題演示示例4:向數據庫中增加記錄使用Connection連接數據庫使用Command發送命令獲得并處理執行結果24/34示例4代碼分析關鍵代碼回顧StringBuildersb=newStringBuilder();sb.AppendLine("INSERTINTO");sb.AppendLine("[Grade]");sb.AppendLine("VALUES");sb.AppendLine("('"+gradeName+"')");//創建command對象SqlCommandcommand=newSqlCommand(sb.ToString(),conn);//執行命令command.ExecuteNonQuery();//……返回受影響記錄的行數單引號的位置25/34ExecuteNonQuery()方法小結該方法執行指定的SQL語句返回受影響的行數使用ExecuteNonQuery()的步驟創建Connection對象定義SQL語句創建Command對象執行ExecuteNonQuery()方法根據返回的結果進行處理26/34學員操作——新增年級記錄需求說明在示例3的基礎上,完善新增年級記錄的功能要求查詢管理員輸入的年級名稱在Grade表中是否已經存在如果指定年級名稱的記錄在Grade表中已存在,顯示提示信息,并退出該操作添加到年級表中,并根據添加結果,輸出相關的提示信息練習完成時間:20分鐘27/34學員操作——修改學生出生日期2-1訓練要點類型轉換Command對象的ExecuteNonQuery()方法需求說明當管理員輸入操作鍵“6”時,輸入要修改的學生學號和修改后的出生日的提示,根據學號更新Student表中的出生日出生日輸入格式錯誤、更新成功以及異常發生給出相應提示信息確認數據庫中的數據被成功更新講解需求說明28/34指導學員操作——修改

溫馨提示

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

評論

0/150

提交評論