【问题标题】:Query is not checking database AdvID itself and delete查询不检查数据库 AdvID 本身并删除
【发布时间】:2019-07-01 02:07:21
【问题描述】:

我希望查询检查数据库 AdvID 本身并在页面加载时删除。为什么我收到此错误调用“System.Data.SqlClient.SqlException:'过程或函数'DeleteByDate'需要参数'@AdvID',但未提供。”它不应该检查数据库本身并删除吗?为什么我必须提供 AdvID?这是我的 page_load 代码

protected void Page_Load(object sender, EventArgs e)
{
    //Generate auto ID
    SqlDataAdapter sad = new SqlDataAdapter("Select isnull(max(cast(AdvID as int)),0)+1 from Advertisement", sqlCon);
    DataTable dt = new DataTable();
    sad.Fill(dt);
    advertismentIdTb.Text = dt.Rows[0][0].ToString();

    //PageLoadValidations
    statusTb.Text = "1";
    endDateTb.Attributes["min"] = DateTime.Now.ToString("yyyy-MM-dd");
    btnDelete.Enabled = false;
    btnUpdate.Enabled = false;
    Image1.Visible = false;

    //Delete from DB Condition (EndDate)
    if (sqlCon.State == ConnectionState.Closed)
        sqlCon.Open();
    SqlCommand sqlCmd = new SqlCommand("DeleteByDate", sqlCon);
    sqlCmd.CommandType = CommandType.StoredProcedure;
    sqlCmd.ExecuteNonQuery();
    sqlCon.Close();

    //Show GridView
    FillGridView();
}

这是我的脚本

ALTER PROC [dbo].[DeleteByDate]
@AdvID int
AS
BEGIN
    DECLARE @CurrentDate DATE = GETDATE() -- to get current date

    -- Assuming that Advertisement table has the column EndDate
    IF EXISTS (SELECT * FROM Advertisement a WHERE a.EndDate < @CurrentDate )
    BEGIN 
        UPDATE a SET a.Status = 0
        FROM Advertisement a
        WHERE a.AdvID = @AdvID  
    END 
END

【问题讨论】:

    标签: c# sql sql-server tsql ado.net


    【解决方案1】:

    我认为您要求的查询将删除所有早于现在结束的广告?您当前的查询正在检查是否有任何广告在此之前结束,然后删除带有您传入的 ID 的广告。

    基于上述假设,尝试以下查询:

    ALTER PROC [dbo].[DeleteByDate]
    AS BEGIN
    
        UPDATE  a 
        SET     a.Status = 0
        FROM    Advertisement a
        WHERE   a.EndDate < GETDATE()
    
    END
    

    【讨论】:

    • 很高兴听到这个消息!请标记为答案和/或投票
    猜你喜欢
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多