我正在使用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子句,它的工作原理除了所有电影都更新而不是我选择的电影。对此有什么解决方法?
答案 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);
据推测,你可以从你的领域获得电影片名。