我试图通过使用选择命令选择电影,一旦选择了在标签上打印 Headers ..这很好 .
下一部分是选中的电影,然后点击按钮,从数据库库存中减1 . 这是我认为我感到困惑的地方,它在按钮点击发生之前没有显示任何错误 .
C# code for update query
protected void Button2_Click(object sender, EventArgs e)
{
var myquery = string.Format("UPDATE DVD SET Stock = Stock - 1");
da.InsertCommand = new OleDbCommand("INSERT INTO DVD (Stock) VALUES (@MessageLabel)", conn);
{
da.InsertCommand.Parameters.AddWithValue("@Stock", MessageLabel.Text);
conn.Open();
da.InsertCommand.ExecuteNonQuery();
using (OleDbCommand cmd = new OleDbCommand(myquery, conn))
cmd.ExecuteNonQuery();
conn.Close();
conn.Dispose();
}
}
Previous code for select event
public void Latest_DVD()
{
{
using (OleDbDataAdapter dataquer = new OleDbDataAdapter("SELECT Title,Category,Director,Stock,Year FROM DVD ", conn))
{
dataquer.Fill(dt);
}
}
DG_Latest.ShowHeader = true;
DG_Latest.DataSource = dt;
DG_Latest.DataBind();
conn.Close();
conn.Dispose();
}
protected void Latest_DVD_SelectedIndexChanged(Object sender, EventArgs e)
{
GridViewRow row = DG_Latest.SelectedRow;
MessageLabel.Text = "You selected to rent " + row.Cells[1].Text + ".";
}
所以我认为我的查询错误,可能也没有从标签中检索更新,但也许在选择它自己...我不确定通过 .
它显示的错误是
Data type mismatch in criteria expression.
在连接打开后
2 回答
正如@afzalulh所说,取下插入部件 . 并将myquery字符串更改为:
这样,您只能更新所选DVD Headers 的Stock . 在不添加WHERE子句的情况下,查询将减少所有DVD的库存 .
您想要更新库存,无需插入 . 我相信这就是你想要的:
EDIT:
myquery
应包括WHERE
,如har07所建议的那样 . 否则它会将所有DVD的库存减少1 .