MNAH
MNAH

Reputation: 71

Why not updating my data?

Error updating Group. Must declare the scalar variable "@SubnameWHERE"... why this error is showing .....

protected void cmdUpdate_Click(object sender, EventArgs e)
    {
        string updateSQL;
        updateSQL = "UPDATE tblnewgroup SET ";
        updateSQL += "Groupname=@Groupname, ";
        updateSQL += "Slno=@Slno, Subname=@Subname";
        updateSQL += "WHERE Groupno=@Groupno_original";

    SqlConnection con = new SqlConnection(connectionString);
    SqlCommand cmd = new SqlCommand(updateSQL, con);


    cmd.Parameters.AddWithValue("@Groupname", txtgname.Text);
    cmd.Parameters.AddWithValue("@Slno", txtsl.Text);
    cmd.Parameters.AddWithValue("@Subname", txtsn.Text);
    cmd.Parameters.AddWithValue("@Groupno_original", lstAuthor.SelectedItem.Value);

    int updated = 0;
    try
    {
        con.Open();
        updated = cmd.ExecuteNonQuery();
        lblResults.Text = updated.ToString() + " record updated.";
    }
    catch (Exception err)
    {
        lblResults.Text = "Error updating Group. ";
        lblResults.Text += err.Message;
    }
    finally
    {
        con.Close();
    }

    if (updated > 0)
    {
        FillAuthorList();
    }

}

Upvotes: 1

Views: 128

Answers (4)

Anoop
Anoop

Reputation: 369

Simply change

updateSQL += "WHERE Groupno=@Groupno_original";

to

updateSQL += " WHERE Groupno=@Groupno_original";

Tip: While constructing such sql commands always put a space at the beginning of each string part.

Upvotes: 1

Soner Gönül
Soner Gönül

Reputation: 98740

You need a space after your Subname=@Subname

Change your

updateSQL += "Slno=@Slno, Subname=@Subname";

to

updateSQL += "Slno=@Slno, Subname=@Subname ";

As a better visualization, you can use it like;

string updateSQL = @"UPDATE tblnewgroup
                     SET Groupname=@Groupname, Slno=@Slno, Subname=@Subname
                     WHERE Groupno=@Groupno_original";

Also you should use using block for dispose your SqlConnection like;

using(SqlConnection con = new SqlConnection(connectionString))
{
  con.Open();
  updated = cmd.ExecuteNonQuery();
  ...
}

Upvotes: 2

Bradley Smith
Bradley Smith

Reputation: 119

As Soner has stated - your sql is invalid -

updateSQL += "Slno=@Slno, Subname=@Subname";
updateSQL += "WHERE Groupno=@Groupno_original";

These two lines will end up as ...@SubnameWHERE Groupno=....

Thats your problem!

Upvotes: 2

Sudhakar Tillapudi
Sudhakar Tillapudi

Reputation: 26199

Problem : You have combined both parameter @Subname and WHERE clause.
Solution : You need to provide space between parameter @Subname and WHERE clause

Replace This

updateSQL += "Slno=@Slno, Subname=@Subname";

With This:

updateSQL += "Slno=@Slno, Subname=@Subname ";

Upvotes: 1

Related Questions