必须声明标量值?

Must Declare Scalar Value?

我正在使用 SQL 和 c# 来完成我的任务。对于这个任务,我是 运行 一个电影数据库,我被困在这部分,我必须检查一部电影。我一直收到 'must declare scalar value' 但我不确定该怎么做。 我的代码:

 <asp:Panel ID="panel5" runat="server" Visible="false">
        <asp:GridView id="one_data" AutoGenerateColumns="false" runat="server" DataKeyNames="MovieID">
            <Columns>

                <asp:BoundField DataField="MovieTitle"
                    HeaderText="Movie"/>
                <asp:BoundField DataField="DateChecked"
                    HeaderText="Date Checked"/>
                <asp:BoundField DataField="CheckedOut"
                    HeaderText="Checked Out"/>
            </Columns>
        </asp:GridView>
        <asp:Button runat="server" Text="Choose another Movie" OnClick="GoBack" />
        <asp:Button runat="server" Text="Check Out" OnClick="CheckOut" />
    </asp:Panel>

面板 5 获取用户选择的选定电影,当他们点击结帐按钮时,字段 'DateChecked' 和 'CheckedOut' 应该填充日期和 'Y' 是的。 CS代码:

public void CheckOut(object sender, EventArgs e)
    {
        get_connection();
        try
        {

            connection.Open();
            command = new SqlCommand("UPDATE Content SET DateChecked=@DateChecked, CheckedOut=@CheckedOut WHERE MovieID=@MovieID", connection);
            command.Parameters.AddWithValue("@DateChecked", DateTime.Now);
            command.Parameters.AddWithValue("@CheckedOut", 'Y');

            reader = command.ExecuteReader();
            one_data.DataSource = reader;
            one_data.DataBind();



            reader.Close();
        }

我省略了 catch 部分,因为它不重要。当我点击结账电影按钮时,我不断收到错误消息,如果我删除 WHERE 子句,它会起作用,除了所有电影都会更新而不是我选择的电影。解决这个问题的办法是什么?

您的 UPDATE 命令具有三个值,它们是使用 @

定义的

您指定了其中两个,但没有指定@MovieID

command = new SqlCommand("UPDATE Content SET DateChecked=@DateChecked, CheckedOut=@CheckedOut WHERE MovieID=@MovieID", connection);
            command.Parameters.AddWithValue("@DateChecked", DateTime.Now);
            command.Parameters.AddWithValue("@CheckedOut", 'Y');

因此它无法形成一些有效的 SQL。您需要添加电影ID

command.Parameters.AddWithValue("@MovieID", movieId);

大概你会从电影标题的边界字段中得到这个。