【发布时间】:2017-11-28 15:45:28
【问题描述】:
我正在使用 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 获取用户选择的选定电影,当他们点击结帐按钮时,“DateChecked”和“CheckedOut”字段应该填写日期,“Y”表示“是”。 客服代码:
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 子句,它会起作用,除了所有电影都更新而不是我选择的电影。有什么办法可以解决这个问题?
【问题讨论】:
-
您没有为
@MovieID值添加 SQL 参数 -
@Igor
ExecuteNonQuery更有意义。ExecuteScalar确实适用于您希望获得一行和一列的查询。
标签: c# sql asp.net database scalar