ADO.NET | 使用Command對象調用存儲過程 | 實現搜索功能

一、什麼是存儲過程

存儲過程就是在大型數據庫中,一種完成特定功能的SQL語句集;一次編譯永久有效,最後返回用戶想要的結果,所以在較爲複雜的業務處理中,通常使用存儲過程封裝查詢語句。

使用SqlCommand對象調用存儲過程時與執行SQL語句命令有很大的區別,主要包含對存儲過程參數的傳遞,輸出參數獲取以及存儲過程返回值等本質上的區別。

二、例子:使用Command對象調用存儲過程實現搜索功能

這個例子,是基於上一篇博客的內容的,上一部分博客點我前往頁面!!

先來看一下效果:

在這裏插入圖片描述
然後看一下逐步的實現過程:

步驟1: 創建存儲過程,首先點擊School數據庫,然後打開可編程性,右鍵單擊存儲過程,最後單擊新建,這樣:

在這裏插入圖片描述
然後寫入Sql語句:

create proc GetStudentList
@SearchValue varchar(256)=''
as
begin
	if @SearchValue<>''
	begin
		select * from [dbo].[Student] where Name like '%'+@SearchValue+'%'
	end
	else
	begin
		select * from [dbo].[Student]
	end
end

步驟2: 新建網站,創建Default.aspx頁面,在頁面添加文本框和輸入框控件:

        <div>
            <div>
                <asp:TextBox ID="TextBox1" runat="server" class="TxtSearch"></asp:TextBox>
                <asp:Button ID="Button1" runat="server" Text="搜索" CssClass="BtnSearch" OnClick="Button1_Click" />
            </div>
            <div id="tabList" runat="server">

            </div>
        </div>

步驟3: 爲表格和搜索建設置CSS樣式:

    <style type="text/css">
        .TxtSearch,.BtnSearch{
            border-width:1px;
            border-style:solid;
        }
        table,table th,table td{
            border:1px;
            border-style:solid;
            border-color:#22bbad;

        }
        table th{
            border-color:white;
        }
        table{
            border-collapse:collapse;
        }
        table th{
            width:150px;
            height:30px;
            text-align:center;
            background-color:#22bbad;
            color:white;
        }
        table td{
            height:30px;
            text-align:center;
        }
    </style>

步驟4:button綁定事件處理方法,並且在頁面載入時直接顯示所有數據:

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string Res = GetSqlData();
                this.tabList.InnerHtml = Res;
            }
        }
                protected void Button1_Click(object sender, EventArgs e)
        {
            string Res = GetSqlData();
            this.tabList.InnerHtml = Res;
        }

步驟5:GetSqlData方法:

        private string GetSqlData()
        {
            string SearchValue = this.TextBox1.Text;
            StringBuilder Res = new StringBuilder();
            Res.Append("<table><tr><th>序號</th><th>姓名</th><th>性別</th><th>年齡</th><th>班級</th></tr>");
            using(SqlConnection conn = new SqlConnection("Server=DESKTOP-9FCSCD4;DataBase=School;Trusted_Connection=SSPI"))
            {
                conn.Open();
                SqlCommand comm = new SqlCommand();
                //指定發送到數據庫的執行命令爲調用存儲過程
                comm.CommandType = CommandType.StoredProcedure;
                comm.CommandText = "GetStudentList";        //存儲過程的名稱
                comm.Connection = conn;
                //定義存儲過程中的參數
                SqlParameter Param = new SqlParameter("SearchValue", SqlDbType.VarChar, 256);
                Param.Value = SearchValue;      //設置參數值
                comm.Parameters.Add(Param);
                using(SqlDataReader DataReader = comm.ExecuteReader())
                {
                    while (DataReader.Read())
                    {
                        int ID = (int)DataReader["ID"];
                        string Name = (string)DataReader["Name"];
                        string Sex = (string)DataReader["Sex"];
                        int Age = (int)DataReader["Age"];
                        string Class = (string)DataReader["Class"];
                        Res.Append("<tr><td>" + ID + "</td>");
                        Res.Append("<td>" + Name + "</td>");
                        Res.Append("<td>" + Sex + "</td>");
                        Res.Append("<td>" + Age + "</td>");
                        Res.Append("<td>" + Class + "</td></tr>");
                    }
                }
                comm.Dispose();
            }
            Res.Append("</table>");
            return Res.ToString();
        }

完成!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章