If you are SQL Server geek, you must be aware with Stored Procedure. While question comes to implement stored procedure in front end language, many developers makes mistake or feel confusion as per my recent observation so I am tempted to write one article which can show how to handle stored procedure in C# when it return some value and when it return some record sets.
--CREATE TABLE
CREATE TABLE empDemo
(
ID INT NOT NULL,
NAME VARCHAR(50)
)
GO
--INSERT DATA
INSERT INTO empDemo
SELECT 1,'Ritesh' UNION ALL
SELECT 2,'Rajan'
--create SP which will return list of employee
--NOTE: this is just basic SP, you can create
--your own for your custom need.
CREATE PROC ListEmp (@id INT)
AS
BEGIN
SELECT * FROM empDemo WHERE ID=@id
END
--check SP whether it works.
EXEC ListEmp 2
Now, we will see C# code (in asp.net code behind) to return the list of employee:
protected void Button1_Click(object sender, EventArgs e)
{
//create connection string and assign it to SqlConnection object
string strConn = "Data Source=.;Initial Catalog=AdventureWorks;Persist Security Info=True;User ID=sa;Password=sa";
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(strConn);
conn.Open();
//setup SqlCommand and assign SP name along with input parameter variable name and value
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand();
command.CommandType = System.Data.CommandType.StoredProcedure;
command.Connection = conn;
command.CommandText = "ListEmp";
command.Parameters.AddWithValue("@id", "2");
//create one data adapter which will execute the command and fill the data into data set
System.Data.SqlClient.SqlDataAdapter recordAdp = new System.Data.SqlClient.SqlDataAdapter();
recordAdp.SelectCommand = command;
System.Data.DataSet recordSet = new System.Data.DataSet();
recordAdp.Fill(recordSet);
command.Dispose();
conn.Close();
//bind gridview1 with our dataset
GridView1.DataSource = recordSet.Tables[0].DefaultView;
GridView1.DataBind();
}
This seems basic but really useful for newbie, now what if we have some other DML command and we want to return value from SP and handle it in our C# ASP.NET.
--create SP to insert record and retun value
--we will handle return value in C# code behind
CREATE PROC InsertEmp(@ID INT, @Name VARCHAR(20))
AS
BEGIN
BEGIN TRY
INSERT INTO empDemo(ID,Name) VALUES(@ID,@Name)
return 1
END TRY
BEGIN CATCH
return 0
END CATCH
END
--check SP works or not
EXEC InsertEmp 3,'Alka'
Now let us move to ASP.NET C# code behind.
protected void Button1_Click(object sender, EventArgs e)
{
//create connection string and assign it to SqlConnection object
string strConn = "Data Source=.;Initial Catalog=AdventureWorks;Persist Security Info=True;User ID=sa;Password=sa";
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(strConn);
conn.Open();
//setup SqlCommand and assign SP name along with input parameter variable name and value
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand();
command.CommandType = System.Data.CommandType.StoredProcedure;
command.Connection = conn;
command.CommandText = "InsertEmp";
command.Parameters.Add("@ReturnValue",System.Data.SqlDbType.Int);
command.Parameters["@ReturnValue"].Direction = System.Data.ParameterDirection.ReturnValue;
command.Parameters.AddWithValue("@id", "4");
command.Parameters.AddWithValue("@Name", "Bihag");
command.ExecuteScalar();
int i = Convert.ToInt32(command.Parameters["@ReturnValue"].Value);
if (i == 1)
{
Response.Write("Successfull!!!!");
}
else
{
Response.Write("Not Successfull!!!!");
}
}
Hope you have enjoyed it!!!!
Reference: Ritesh Shah
http://www.sqlhub.com
Note: Microsoft Books online is a default reference of all articles but examples and explanations prepared by Ritesh Shah, founder of http://www.SQLHub.com
0 comments:
Post a Comment