Anu
Anu

Reputation: 925

Update Statement and ExecuteNonQuery Doesnot return C#, MySQL

In my C#,asp.net application, im inserting field values in to MySQl and later im updating fiels values after editing. I used below code. its get executed but values are not get added in Database. And also i used

numRowsUpdated = cmd.ExecuteNonQuery();

But in debugger windows, it shows as

The name 'numRowsUpdated' does not exist in the current context

My code:

 protected void UpdateBtn_Click(object sender, EventArgs e)
        {
            int numRowsUpdated = -1;
            string Query = "UPDATE employee SET  EmployeeName=@a,EmpID =@b,Designation =@c,JoiningDate=@d,BankName =@e,AccountNumber = @f,Pancard =@g,PFNumber=@h WHERE id = @i" ;
            if (GlobalCS.OpenConnection() == true)
            {                    
                MySqlCommand cmd = new MySqlCommand(Query, GlobalCS.objMyCon);
                cmd.Parameters.AddWithValue("i", selectedid);
                cmd.Parameters.AddWithValue("a", NameTxt.Text);
                cmd.Parameters.AddWithValue("b", EmpidTxt.Text);
                cmd.Parameters.AddWithValue("c", DesgTxt.Text);
                cmd.Parameters.AddWithValue("d", JoinTxt.Text);
                cmd.Parameters.AddWithValue("e", BankTxt.Text);
                cmd.Parameters.AddWithValue("f", ACNoTxt.Text);
                cmd.Parameters.AddWithValue("g", PANTxt.Text);
                cmd.Parameters.AddWithValue("h", PFTxt.Text);
                numRowsUpdated = cmd.ExecuteNonQuery(); 
            } 
            GlobalCS.CloseConnection();                
        }

GridView selection:

protected void OnSelectedIndexChanged(object sender, EventArgs e)
        {
            GridViewRow row = EmployeeGrid.SelectedRow;
            selectedid = Convert.ToInt32(row.Cells[1].Text);
            NameTxt.Text = row.Cells[2].Text;
            EmpidTxt.Text = row.Cells[3].Text;
          ...

        }

selectedid declaration:

namespace SimERP
{
    public partial class Employee : System.Web.UI.Page
    {
        int selectedid = -1;
        protected void Page_Load(object sender, EventArgs e)
        {
            LoadEmployeeData();
        }

Upvotes: 0

Views: 494

Answers (1)

Hassan
Hassan

Reputation: 5430

Code seems fine. You have to put @ symbol with parameter names:

Example:

 cmd.Parameters.AddWithValue("@i", selectedid);
 cmd.Parameters.AddWithValue("@a", NameTxt.Text);
 cmd.Parameters.AddWithValue("@b", EmpidTxt.Text);
 cmd.Parameters.AddWithValue("@c", DesgTxt.Text);

UPDATE:

Seems like if(!IsPostBack) is also missing in Page_Load event:

namespace SimERP
{
    public partial class Employee : System.Web.UI.Page
    {
        int selectedid = -1;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
               LoadEmployeeData();
            }
        }

Upvotes: 1

Related Questions