深入.net平臺的軟件系統(tǒng)分層開發(fā)tp_第1頁
深入.net平臺的軟件系統(tǒng)分層開發(fā)tp_第2頁
深入.net平臺的軟件系統(tǒng)分層開發(fā)tp_第3頁
深入.net平臺的軟件系統(tǒng)分層開發(fā)tp_第4頁
深入.net平臺的軟件系統(tǒng)分層開發(fā)tp_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章提高系統(tǒng)性能: 從數(shù)據(jù)訪問開始回顧與作業(yè)點評實體類的作用是什么?如何在系統(tǒng)中保存多個實體對象?預(yù)習(xí)檢查使用SqlParameter時,SQL語句的參數(shù)用什么符號標識?using 有哪些作用?本章任務(wù)實現(xiàn)查詢學(xué)生信息功能實現(xiàn)添加學(xué)生成績功能實現(xiàn)修改學(xué)生信息功能本章目標掌握使用 using 釋放對象掌握使用 SqlParameter 給SQL傳遞參數(shù)掌握使用 調(diào)用存儲過程使用Connection的問題使用Connection,如何保證連接關(guān)閉?SqlConnection conn = new SqlConnection(connString); conn.Open( ); /conn.Clo

2、se( ); SqlConnection conn = new SqlConnection(connString);try conn.Open(); /finally conn.Close();有沒有一種更簡單的釋放 Connection 對象的方式?釋放資源 - using使用using 釋放Connection SqlConnection conn = new SqlConnection(connString);try conn.Open(); /finally conn.Close();using (SqlConnection conn = new SqlConnection(connS

3、tring) conn.Open(); / 使用using做什么using 的用法用法一:導(dǎo)入命名空間 用法二:釋放對象占用的資源如Connection、DataReader 、 FileScreamusing (類型 對象名 = new 構(gòu)造函數(shù)(參數(shù)列表) / /對象的作用域using的用法1使用using 釋放SqlConnection using (SqlConnection conn = new SqlConnection(connString) conn.Open(); / 不需要顯式調(diào)用Close( ) using的用法2使用using 釋放SqlDataReader using

4、 (SqlDataReader reader = command.ExecuteReader() while (reader.Read() /遍歷獲得查詢結(jié)果 演示示例:加載年級和科目using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection) while (reader.Read() /遍歷獲得查詢結(jié)果 不需要顯式調(diào)用Close( )保證DataReader 釋放后自動釋放Connection 深入usingusing 的本質(zhì)using (類型 對象名 = new 類型(參數(shù)列表) /

5、 類型 對象名 = new類型(參數(shù)列表);try /finally 對象名.Dispose();1 Dispose() 是 IDisable 接口的方法2 Dispose() 專用于釋放對象稀缺資源3 Object 類實現(xiàn)了Dispose(),部分類實現(xiàn)了Close()4 Close()封裝了對Dispose()的調(diào)用回顧:拼接SQL的方法在C# 中如何使用SQL 語句插入數(shù)據(jù)?方式1string sql = insert into student values(+student.StudentNo+ /. + );string sql = INSERT Student (StudentNo

6、,LoginPwd,StudentName, Gender,GradeId, Phone,BornDate,Email,IdentityCard) VALUES (0,1,2,3,4,5,6,7,8);sql = string.Format(sql, student.StudentNo, /. student.IdentityCard);方式2拼接SQL語句的弊端弊端一:不美觀,而且容易出現(xiàn)錯誤 弊端二:安全性差,容易被SQL注入攻擊參數(shù)化查詢是能有效避免上述弊端的一種執(zhí)行SQL 語句的方式參數(shù)化命令 從“”開始 StringBuilder sb = new StringBuilder();

7、sb.AppendLine(INSERT Student ); sb.AppendLine(VALUES); sb.AppendLine(StudentNo,LoginPwd, StudentName,Sex,GradeId,Phone,Address, BornDate,Email,IdentityCard);使用 標識需要動態(tài)替換的值,對應(yīng)數(shù)據(jù)庫表的各個字段使用 構(gòu)造參數(shù)化SQL 命令參數(shù)化命令 SqlParameterSqlParameter 對象和占位符一一對應(yīng),用來替換占位符SqlParameter 的屬性 屬性 說明DbType對應(yīng)數(shù)據(jù)庫的數(shù)據(jù)類型Direction參數(shù)是只可輸入、

8、只可輸出、雙向或存儲過程返回值參數(shù) IsNullable參數(shù)是否接受空值 ParameterName參數(shù)的名稱Size參數(shù)對應(yīng)數(shù)據(jù)的最大大小 SqlDbTypeSQL Server 數(shù)據(jù)庫的數(shù)據(jù)類型Value參數(shù)的值 參數(shù)化命令 SqlParameter通過Command 的Parameters 的屬性添加SqlParameter 對象public SqlParameter Add(string parameterName, SqlDbType sqlDbType);public SqlParameter Add(string parameterName, Object paraValue);

9、 public SqlParameter Add(SqlParameter value); public void AddRange(SqlParameter values); 執(zhí)行參數(shù)化SQL 使用 mand 執(zhí)行參數(shù)化SQL 的一般步驟 1、構(gòu)造數(shù)據(jù)庫連接對象2、構(gòu)造參數(shù)化SQL 語句3、構(gòu)造 SqlParameter 對象4、創(chuàng)建 mand 對象,設(shè)置SQL 語句, 添加 SqlParameter 對象5、打開數(shù)據(jù)庫連接,執(zhí)行 mand 命令演示示例:添加學(xué)生信息練習(xí)加載年級和科目 需求說明:添加“查看成績信息”窗體,在該窗體中,加載年級和科目下拉列表使用using 釋放資源完成時間:2

10、0分鐘練習(xí)查詢學(xué)生信息 需求說明:實現(xiàn)學(xué)生信息按“年級”和“姓名”查詢功能,支持按“姓名”模糊查詢使用using 釋放連接資源完成時間:25分鐘指導(dǎo)添加學(xué)生成績3-1 訓(xùn)練要點:SqlParameter的使用 需求說明:單擊“添加學(xué)生成績”菜單,彈出查詢學(xué)生窗體右鍵單擊學(xué)生記錄,彈出快捷菜單單擊快捷菜單,彈出添加學(xué)生成績窗體講解需求說明指導(dǎo)添加學(xué)生成績3-2 實現(xiàn)思路:在數(shù)據(jù)訪問層中添加學(xué)生成績表訪問類實現(xiàn)添加學(xué)生成績的方法實現(xiàn)按姓名模糊查詢的方法實現(xiàn)查詢學(xué)生窗體實現(xiàn)快捷菜單實現(xiàn)添加成績窗體指導(dǎo)添加學(xué)生成績3-3 關(guān)鍵代碼提示完成時間:30分鐘StringBuilder sb = new St

11、ringBuilder();sb.AppendLine(SELECT);sb.AppendLine( *);sb.AppendLine( FROM);sb.AppendLine( Student);sb.AppendLine( WHERE);sb.AppendLine( StudentName like + % + StudentName +%);SqlParameter para = new SqlParameter new SqlParameter(StudentName, name) ; 共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解回顧:存儲過程使用存儲過程crea

12、te procedure sp_update_student( StudentNo int, StudentName nvarchar(50), -省略其他參數(shù))asUPDATE Student SET StudentName= StudentName, -省略其他賦值WHERE StudentNo=StudentNo優(yōu)點:1、性能高2、安全性好在.NET中調(diào)用存儲過程在.NET中調(diào)用存儲過程 mand cmd = new mand();cmd.Connection = conn; mandText = sp_update_student; mandType = CommandType.Sto

13、redProcedure;/.定義和添加SqlParameter 參數(shù)/.打開連接并執(zhí)行命令指定存儲過程名指定命令類型為 存儲過程演示示例:修改學(xué)生信息指導(dǎo)修改學(xué)生信息的存儲過程2-1 訓(xùn)練要點:存儲過程的編寫 需求說明:實現(xiàn)存儲過程可修改學(xué)生信息,可修改學(xué)生表所有字段在前一存儲過程基礎(chǔ)上,實現(xiàn)帶輸出參數(shù)的存儲過程,返回“修改成功”的信息講解需求說明指導(dǎo)修改學(xué)生信息的存儲過程2-2 實現(xiàn)思路:使用 create procedure 定義存儲過程定義存儲過程參數(shù)編寫數(shù)據(jù)更新的SQL 語句設(shè)置輸出參數(shù)的值完成時間:15分鐘練習(xí)調(diào)用存儲過程修改學(xué)生信息需求說明:在學(xué)生信息列表窗體上實現(xiàn)修改學(xué)生信息功能單擊列表中的學(xué)生在窗體下方顯示學(xué)生信息單擊“修改”可更新學(xué)生信息,同時列表刷新 完成時間:25

溫馨提示

  • 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

提交評論