日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用存储过程(22)

發(fā)布時間:2023/12/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用存储过程(22) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

存儲過程是數(shù)據(jù)庫開發(fā)人員為了使用某一特定的數(shù)據(jù)庫而編寫SQL語句集。其他的web應(yīng)用程序可以調(diào)用這些存儲過程來訪問和操作數(shù)據(jù)庫中的數(shù)據(jù),如圖:

web應(yīng)用程序可以直接訪問數(shù)據(jù)庫,也可以通過存儲過程來調(diào)用數(shù)據(jù)庫,使用存儲過程訪問數(shù)據(jù)庫與直接訪問數(shù)據(jù)庫,相比有很多優(yōu)勢比如:

  • 假如有一套復(fù)雜的SQL語句需要在多個aspx文件中,可以把他們放在一個存儲過程,然后執(zhí)行該存儲過程。這樣可以減小aspx文件的大小,同時可以保證每一頁執(zhí)行的SQL語句相同;當(dāng)執(zhí)行一個SQL語句時,服務(wù)器要先對處理中的語句編譯,這不但需要時間處理,還要花費服務(wù)器資源,相比較而言,在存儲過程執(zhí)行第一次后,就不需要在進行編譯了,通過存儲過程可以很好的跨過編譯這一步,更快的執(zhí)行的SQL語句集。從一個動態(tài)網(wǎng)頁中執(zhí)行一個存儲過程比執(zhí)行一個SQL語句的集合更有效。
  • 可以對存儲過程輸入輸出值,這意味著存儲過程非常靈活,相同的存儲過程可以根據(jù)不同輸入值返回不同的信息。
  • 當(dāng)向數(shù)據(jù)庫服務(wù)器傳遞一個SQL語句集合時,必須傳遞其中的 誒一個獨立的預(yù)計,當(dāng)執(zhí)行存儲過程時,相反的,僅需傳遞一個簡單的預(yù)計,很明顯的,可以通過執(zhí)行存儲過程,來減少在網(wǎng)絡(luò)上的擁塞。
  • 在存儲過程中,可以封裝一些對數(shù)據(jù)庫的數(shù)據(jù)操作,從而簡化組件或 應(yīng)用程序中有關(guān)數(shù)據(jù)操作 的復(fù)雜性。
  • 通過使用存儲過程可以方便程序的升級和業(yè)務(wù)邏輯的修改。在存儲過程中封裝的數(shù)據(jù)可以很方便的修改,不需要重新更改源代碼。
  • 可以提高應(yīng)用程序的安全性,可以再數(shù)據(jù)庫端授權(quán)用戶使用存儲過程,而拒絕用戶直接訪問數(shù)據(jù)庫,這樣用戶可以通過存儲過程來訪問數(shù)據(jù),從而防止用戶直接操作數(shù)據(jù)表。

從存儲過程的優(yōu)勢不難看出,存儲過程可以提高訪問數(shù)據(jù)的效率,安全性,以及對數(shù)據(jù)庫的保護性比較好,存儲過程按功能可以分為“返回記錄 的存儲過程”“返回值的存儲過程”“行為存儲過程”

返回記錄的存儲過程用于查找指定的記錄,并且排序和過濾這些記錄,然后將查找、排序和過濾后的結(jié)果返回到dataset對象,或者數(shù)據(jù)列表等控件中,此類存儲過程用SQL的select語句構(gòu)成。

創(chuàng)建存儲過程:

create procedure index_student as select * from course where name='數(shù)據(jù)庫' order by id

c#后臺代碼:

using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient;namespace 返回記錄 {public partial class _Default : System.Web.UI.Page{override protected void OnInit( EventArgs e){InitializeComponent();base.OnInit(e);}private void InitializeComponent(){this.Button1.Click+=new EventHandler(Button1_Click);}protected void Button1_Click(object sender, System.EventArgs e){string connectionsting = "Data Source=神舟龍-PC\\SQLEXPRESS;Initial Catalog=student;Integrated Security=True;";SqlConnection conn = new SqlConnection(connectionsting );SqlCommand comm = new SqlCommand("index_student", conn);//將存儲過程名稱index_student作為構(gòu)造函數(shù)的一個參數(shù)comm.CommandType = CommandType.StoredProcedure;//聲明comm對象的CommandType為枚舉值CommandType.StoredProcedure,表示執(zhí)行存儲過程SqlDataAdapter da = new SqlDataAdapter(comm);DataSet ds = new DataSet();try{conn.Open();da.Fill(ds, "course");this.DataGrid1.DataSource = ds.Tables["course"].DefaultView;this.DataGrid1.DataBind();da.Dispose();}catch{this.RegisterStartupScript("message","<script>alert('操作失敗!')</script>");//頁面錯誤提示}}} }

轉(zhuǎn)載于:https://www.cnblogs.com/shenzhoulong/archive/2010/05/23/1742040.html

總結(jié)

以上是生活随笔為你收集整理的使用存储过程(22)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。