首页 文章

在选择上减少库存量

提问于
浏览
0

我试图通过使用选择命令选择电影,一旦选择了在标签上打印 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 回答

  • 2

    正如@afzalulh所说,取下插入部件 . 并将myquery字符串更改为:

    var myquery = string.Format("UPDATE DVD SET Stock = Stock - 1 WHERE Title = @Title");
    var row = DB_Latest.SelectedRow;
    var title = row.Cells[0].Text;
    var cmd = new OleDbCommand(myquery, conn);
    cmd.Parameters.AddWithValue("@Title", title);
    

    这样,您只能更新所选DVD Headers 的Stock . 在不添加WHERE子句的情况下,查询将减少所有DVD的库存 .

  • 1

    您想要更新库存,无需插入 . 我相信这就是你想要的:

    protected void Button2_Click(object sender, EventArgs e)
    {
    
        var myquery = string.Format("UPDATE DVD SET Stock = Stock - 1");
        conn.Open();
        using (OleDbCommand cmd = new OleDbCommand(myquery, conn))
            cmd.ExecuteNonQuery();
        conn.Close();
        conn.Dispose();
    }
    

    EDIT: myquery 应包括 WHERE ,如har07所建议的那样 . 否则它会将所有DVD的库存减少1 .

相关问题