我试图让用户编辑产品,但在我完成代码之后。 它是精确的编辑,但它设置所有具有相同选定值的行
这是我写的代码
cmd = new SqlCommand("UPDATE Products SET Item_Name=@Item_Name, Item_Price=@Item_Price, Item_Code=@Item_Code, Item_Stock=@Item_Stock, Item_ExpDate=@Item_ExpDate", con);
SqlParameter[] param = new SqlParameter[5];
param[0] = new SqlParameter("@Item_Name", SqlDbType.VarChar, 50);
param[0].Value = namesearch.Text;
param[1] = new SqlParameter("@Item_Price", SqlDbType.VarChar, 50);
param[1].Value = pricesearch.Text;
param[2] = new SqlParameter("@Item_Code", SqlDbType.VarChar, 35);
param[2].Value = codesearch.Text;
param[3] = new SqlParameter("@Item_Stock", SqlDbType.Int);
param[3].Value = Convert.ToInt32(stocksearch.Text);
param[4] = new SqlParameter("@Item_ExpDate", SqlDbType.DateTime);
param[4].Value = expdatesearch.Text;
con.Open();
cmd.Parameters.AddRange(param);
cmd.ExecuteNonQuery();
sda = new SqlDataAdapter("SELECT * FROM Products", con);
sda.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();
答案 0 :(得分:1)
将您的SQL语句更改为:
"UPDATE Products SET Item_Name=@Item_Name, Item_Price=@Item_Price, Item_Stock=@Item_Stock, Item_ExpDate=@Item_ExpDate WHERE Item_Code=@Item_Code"
,假设'Item_Code'
是您的唯一标识符。 SQL中的WHERE
子句用于过滤UPDATE
影响的行数,因此如果省略它,它将更新表中的所有行。