更新时出现SQL错误

时间:2014-04-23 21:28:19

标签: c# sql gridview updating

我有更新问题。怎么了?

代码编译,但是当我点击按钮时,该行 - > cmd.ExecuteNonQuery();没用。

HERE ERROR

  

附加信息:参数化查询'(@ nmo int,@ rezerwo int)UPDATE oferty SET oferty.miejsca = @nmo'需要参数'@rezerwo',这是未提供的。

public partial class oferty1 : System.Web.UI.Page
    SqlConnection cn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\ddd\Documents\Visual Studio 2013\Projects\sV1\stopowiczeV1\App_Data\ofety-sV1.mdf;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework");
    SqlCommand cmd = new SqlCommand();

    protected void Page_Load(object sender, EventArgs e)
cmd.Connection = cn;

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        var g = GridView1.SelectedRow;
        string rezerw = GridView1.DataKeys[g.DataItemIndex]["Idoferty"].ToString();

        m = GridView1.SelectedRow.Cells[5].Text;
        int nmo = Convert.ToInt32(m);
        int rezerwo = Convert.ToInt32(rezerw);
        if (GridView1.SelectedRow.Cells[5].Text != "" & GridView1.SelectedRow.Cells[0].Text != "")
        {
            cn.Open();
            nmo--;
            cmd = cn.CreateCommand();
            cmd.CommandText = ("UPDATE oferty SET oferty.miejsca = @nmo WHERE oferty.idoferty = @rezerwo");
            cmd.Parameters.Add(new SqlParameter("@nmo", nmo));
            cmd.Parameters.Add(new SqlParameter("@rezerwo​", rezerwo));
            string snmo = Convert.ToString(nmo);
            td.miejsca = snmo;
            cmd.ExecuteNonQuery();
            cn.Close();
        }

        db.rezerwacjes.InsertOnSubmit(tc);
        db.SubmitChanges();
    }

1 个答案:

答案 0 :(得分:2)

SqlParamter的构造函数可能错误地解释了第二个参数(SqlDbType而不是实际值)。

而不是

cmd.Parameters.Add(new SqlParameter("@nmo", nmo));
cmd.Parameters.Add(new SqlParameter("@rezerwo​", rezerwo));

尝试

cmd.Parameters.AddWithValue("@nmo", nmo);
cmd.Parameters.AddWithValue("@rezerwo​", rezerwo);

另一点。默认情况下,命令类型可以是存储过程,尝试将其添加到您的代码中:

cmd.CommandType = CommandType.Text;