必须声明标量值?

时间:2017-11-28 15:45:28

标签: c# sql asp.net database scalar

我正在使用SQL和c#来完成我的任务。对于这项任务,我正在运行一个电影数据库,我被困在这部分,我必须看一部电影。我一直在申请标量值'但我不确定该怎么做。 我的代码:

 <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获取用户选择的所选电影,当他们点击结账按钮时,字段&#39; DateChecked&#39;和&#39; CheckedOut&#39;应该填写日期和“Y&#39;是的。 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();
        }

我遗漏了捕获部分,因为它不重要。当我点击结帐电影按钮时,我不断收到错误,如果我删除WHERE子句,它的工作原理除了所有电影都更新而不是我选择的电影。对此有什么解决方法?

1 个答案:

答案 0 :(得分:2)

您的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);

据推测,你可以从你的领域获得电影片名。