Click here to Skip to main content
15,912,475 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
problem on saving data two dropdownlist using storeprocedure
C#
protected void btnsave_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "[dbo].[usp_Emp]";
cmd.Connection = con;
SqlParameter paremp = new SqlParameter("@EmpName", SqlDbType.NVarChar, 50);
paremp.Value = txtEmp.Text;
cmd.Parameters.Add(paremp);
SqlParameter parejob = new SqlParameter("@Job", SqlDbType.NVarChar, 50);
// if (jobdropdwn.SelectedIndex > 0)
 
parejob.Value = jobdropdwn.SelectedIndex.ToString();
//else
// parejob.Value = "";
cmd.Parameters.Add(parejob);
SqlParameter paresal = new SqlParameter("@Salary", SqlDbType.Money);
paresal.Value = txtSalary.Text;
cmd.Parameters.Add(paresal);
SqlParameter pardptname = new SqlParameter("@DeptNo", SqlDbType.NVarChar, 50);
// if (detptdropdwn.SelectedIndex > 0)
pardptname.Value = detptdropdwn.SelectedIndex.ToString();
//else
// pardptname.Value = "";
SqlParameter pardrp = new SqlParameter("@flag", 1);
cmd.Parameters.Add(pardrp);
 
cmd.Parameters.Add(pardptname);
// SqlParameter partwo = new SqlParameter("@flag", 1);
SqlParameter parusrname = new SqlParameter("@Username", SqlDbType.NVarChar, 50);
parusrname.Value = txtUsername.Text;
cmd.Parameters.Add(parusrname);
SqlParameter parepaswd = new SqlParameter("@Password1", SqlDbType.NVarChar, 50);
parepaswd.Value = txtPassword.Text;
cmd.Parameters.Add(parepaswd);


SqlParameter pareusrtype = new SqlParameter("@UserType", SqlDbType.NVarChar, 50);
// if (usertypdropdwn.SelectedIndex > 0)
pareusrtype.Value = usertypdropdwn.SelectedItem.ToString();
//else
// pareusrtype.Value = "";
SqlParameter parusr = new SqlParameter("@flag", 2);
cmd.Parameters.Add(parusr);
cmd.Parameters.Add(pareusrtype);
}
Posted
Updated 10-Feb-15 2:59am
v2
Comments
Shridhar Gowda 10-Feb-15 8:21am    
Would you please elaborate the question? Provide the code what you have written. Where you are getting error
[no name] 10-Feb-15 8:36am    
protected void btnsave_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "[dbo].[usp_Emp]";
cmd.Connection = con;
SqlParameter paremp = new SqlParameter("@EmpName", SqlDbType.NVarChar, 50);
paremp.Value = txtEmp.Text;
cmd.Parameters.Add(paremp);
SqlParameter parejob = new SqlParameter("@Job", SqlDbType.NVarChar, 50);
// if (jobdropdwn.SelectedIndex > 0)

parejob.Value = jobdropdwn.SelectedIndex.ToString();
//else
// parejob.Value = "";
cmd.Parameters.Add(parejob);
SqlParameter paresal = new SqlParameter("@Salary", SqlDbType.Money);
paresal.Value = txtSalary.Text;
cmd.Parameters.Add(paresal);
SqlParameter pardptname = new SqlParameter("@DeptNo", SqlDbType.NVarChar, 50);
// if (detptdropdwn.SelectedIndex > 0)
pardptname.Value = detptdropdwn.SelectedIndex.ToString();
//else
// pardptname.Value = "";
SqlParameter pardrp = new SqlParameter("@flag", 1);
cmd.Parameters.Add(pardrp);

cmd.Parameters.Add(pardptname);
// SqlParameter partwo = new SqlParameter("@flag", 1);
SqlParameter parusrname = new SqlParameter("@Username", SqlDbType.NVarChar, 50);
parusrname.Value = txtUsername.Text;
cmd.Parameters.Add(parusrname);
SqlParameter parepaswd = new SqlParameter("@Password1", SqlDbType.NVarChar, 50);
parepaswd.Value = txtPassword.Text;
cmd.Parameters.Add(parepaswd);


SqlParameter pareusrtype = new SqlParameter("@UserType", SqlDbType.NVarChar, 50);
// if (usertypdropdwn.SelectedIndex > 0)
pareusrtype.Value = usertypdropdwn.SelectedItem.ToString();
//else
// pareusrtype.Value = "";
SqlParameter parusr = new SqlParameter("@flag", 2);
cmd.Parameters.Add(parusr);
cmd.Parameters.Add(pareusrtype);





}
ZurdoDev 10-Feb-15 9:39am    
1. What is your question?
2. I would simplify your parameters and instead just do one line for each parameter:
cmd.Parameters.AddWithValue("@param1", param1);

1 solution

You've created the command and added the parameters - congratulations on avoiding SQL injection, by the way! :) - but you've not executed the command.

You need to add the following lines to the bottom of your method:
C#
bool closeConnection = false;
if (con.ConnectionState == ConnectionState.Closed)
{
   con.Open();
   closeConnection = true;
}

try
{
    cmd.ExecuteNonQuery();
}
finally
{
    if (closeConnection)
    {
        con.Close();
    }
}

(This would be simpler if you declared your SqlConnection locally and wrapped it in a using block.)

As Ryan mentioned, you could also simplify adding the parameters by using the AddWithValue method[^].

A tidied-up version of your method would look something like this:
C#
protected void btnsave_Click(object sender, EventArgs e)
{
    using (SqlConnection connection = new SqlConnection(ConnectionStringHere))
    using (SqlCommand cmd = new SqlCommand("dbo.usp_Emp", connection))
    {
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.AddWithValue("@EmpName", txtEmp.Text);
        cmd.Parameters.AddWithValue("@Job", jobdropdown.SelectedIndex.ToString());
        cmd.Parameters.AddWithValue("@Salary", txtSalary.Text);
        cmd.Parameters.AddWithValue("@DeptNo", deptdropdown.SelectedIndex.ToString());
        cmd.Parameters.AddWithValue("@Username", txtUsername.Text);
        cmd.Parameters.AddWithValue("@Password1", txtPassword.Text);
        cmd.Parameters.AddWithValue("@UserType", usertypdropdown.SelectedItem.ToString());

        // TODO: You've added the same parameter twice - only one value will be used.
        // cmd.Parameters.AddWithValue("@flag", 1);
        cmd.Parameters.AddWithValue("@flag", 2);

        connection.Open();
        cmd.ExecuteNonQuery();
    }
}
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900