這篇文章是ADO.NET的DataReader與SP(StoredProcedure)互相搭配之應用,因為看過網路上許多分享文章,並沒有詳細寫出過程,所以在此分享一些心得。
ADO.NET呼叫SP在業界是非常常用之做法,寫SP好處有以下幾點
1.一個SP可以執行一系列的sql指令。
2.SP可以參考其他的SP
3.SP建立完成後會再server的DB進行編譯,處理速度比SQL速度還快。
4.SP可以設定存取權限
Command物件呼叫SP和執行SQL敘述差不多,差別於呼叫SP需要再Clien端設定一些參數。分以下四種情形:
1.參數為輸入功能
2.參數為雙向,提供輸入與輸出
3.參數是輸出功能
4.可以回傳SP執行後回傳值
這個範例是用Command物件呼叫SP與輸入參數之使用
以下分兩部分來建立:
1.SP
該SP名稱為:GetEmployeeByName
傳入之參數為@Empid
CREATE PROCEDURE [dbo].[GetEmployeeByName]
(
@Empid int
)
as
SELECT * FROM 員工 WHERE 員工編號 = @Empid
RETURN
2.ASP.NET程式部分
前端畫面:textbox輸入id,按下按鈕後代值給SP,SP執行完後給DataReader再給GV顯示資料。
protected void DBInit()
{
//Step1:與資料庫連接
SqlConnection Conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["資料庫連線字串"].ConnectionString);
Conn.Open();
//Step2:
//A. cmd.CommandText = "GetEmployeeByName"; 用到的SP名稱
//B. Command物件之CommandType屬性設置為CommandType.StoredProcedure,代表要執行的是SP
SqlCommand cmd = new SqlCommand();
cmd.Connection = Conn;
cmd.CommandText = "GetEmployeeByName";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Empid", TextBox1.Text);
SqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();
dr.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
DBInit();
}